3 namespace Domain\Entities\StepMania
;
5 use Domain\Entities\StepMania\IPackBuilder
;
6 use Domain\Entities\IUser
;
7 use Domain\Entities\IFile
;
9 interface IPackStepByStepBuilder
11 public function With_Title($title);
14 interface IPackStepByStepBuilder_With_Title
16 public function With_Uploader(IUser
$user);
19 interface IPackStepByStepBuilder_With_Uploader
21 public function With_Simfiles(array $simfiles);
24 interface IPackStepByStepBuilder_With_Simfiles
26 public function With_Banner(IFile
$banner);
27 public function With_File(IFile
$file);
28 public function build();
31 abstract class AbstractPackStepByStepBuilder
33 /* @var $_simfileBuilder Domain\Entities\StepMania\ISimfileBuilder */
34 protected $_packBuilder;
36 public function __construct(IPackBuilder
$builder)
38 $this->_packBuilder
= $builder;
43 class PackStepByStepBuilder
extends AbstractPackStepByStepBuilder
implements IPackStepByStepBuilder
45 public function With_Title($title)
47 $this->_packBuilder
->With_Title($title);
48 return new PackStepByStepBuilder_With_Title($this->_packBuilder
);
52 class PackStepByStepBuilder_With_Title
extends AbstractPackStepByStepBuilder
implements IPackStepByStepBuilder_With_Title
54 public function With_Uploader(IUser
$user)
56 $this->_packBuilder
->With_Uploader($user);
57 return new PackStepByStepBuilder_With_Uploader($this->_packBuilder
);
61 class PackStepByStepBuilder_With_Uploader
extends AbstractPackStepByStepBuilder
implements IPackStepByStepBuilder_With_Uploader
63 public function With_Simfiles(array $simfiles)
65 $this->_packBuilder
->With_Simfiles($simfiles);
66 return new PackStepByStepBuilder_With_Simfiles($this->_packBuilder
);
70 class PackStepByStepBuilder_With_Simfiles
extends AbstractPackStepByStepBuilder
implements IPackStepByStepBuilder_With_Simfiles
72 public function With_Banner(IFile
$banner)
74 $this->_packBuilder
->With_Banner($banner);
78 public function With_File(Ifile
$file)
80 $this->_packBuilder
->With_File($file);
84 public function build()
86 return $this->_packBuilder