From f4c9af503b822f91c9c4d40f117343c5f06a84b0 Mon Sep 17 00:00:00 2001 From: Dominik Liebler Date: Thu, 22 Sep 2016 14:56:44 +0200 Subject: [PATCH] PHP7 Prototype --- Creational/Prototype/BarBookPrototype.php | 3 --- Creational/Prototype/BookPrototype.php | 16 +----------- Creational/Prototype/FooBookPrototype.php | 6 ++--- Creational/Prototype/README.rst | 12 ++++----- Creational/Prototype/Tests/PrototypeTest.php | 27 ++++++++++++++++++++ Creational/Prototype/index.php | 17 ------------ 6 files changed, 37 insertions(+), 44 deletions(-) create mode 100644 Creational/Prototype/Tests/PrototypeTest.php delete mode 100644 Creational/Prototype/index.php diff --git a/Creational/Prototype/BarBookPrototype.php b/Creational/Prototype/BarBookPrototype.php index c323a8c..5afadad 100644 --- a/Creational/Prototype/BarBookPrototype.php +++ b/Creational/Prototype/BarBookPrototype.php @@ -9,9 +9,6 @@ class BarBookPrototype extends BookPrototype */ protected $category = 'Bar'; - /** - * empty clone. - */ public function __clone() { } diff --git a/Creational/Prototype/BookPrototype.php b/Creational/Prototype/BookPrototype.php index e0fafa6..2f4d55f 100644 --- a/Creational/Prototype/BookPrototype.php +++ b/Creational/Prototype/BookPrototype.php @@ -2,9 +2,6 @@ namespace DesignPatterns\Creational\Prototype; -/** - * class BookPrototype. - */ abstract class BookPrototype { /** @@ -17,24 +14,13 @@ abstract class BookPrototype */ protected $category; - /** - * @abstract - * - * @return void - */ abstract public function __clone(); - /** - * @return string - */ - public function getTitle() + public function getTitle(): string { return $this->title; } - /** - * @param string $title - */ public function setTitle($title) { $this->title = $title; diff --git a/Creational/Prototype/FooBookPrototype.php b/Creational/Prototype/FooBookPrototype.php index 47c73e6..51550f9 100644 --- a/Creational/Prototype/FooBookPrototype.php +++ b/Creational/Prototype/FooBookPrototype.php @@ -4,11 +4,11 @@ namespace DesignPatterns\Creational\Prototype; class FooBookPrototype extends BookPrototype { + /** + * @var string + */ protected $category = 'Foo'; - /** - * empty clone. - */ public function __clone() { } diff --git a/Creational/Prototype/README.rst b/Creational/Prototype/README.rst index af38f8f..28606a6 100644 --- a/Creational/Prototype/README.rst +++ b/Creational/Prototype/README.rst @@ -25,12 +25,6 @@ Code You can also find these code on `GitHub`_ -index.php - -.. literalinclude:: index.php - :language: php - :linenos: - BookPrototype.php .. literalinclude:: BookPrototype.php @@ -52,5 +46,11 @@ FooBookPrototype.php Test ---- +Tests/PrototypeTest.php + +.. literalinclude:: Tests/PrototypeTest.php + :language: php + :linenos: + .. _`GitHub`: https://github.com/domnikl/DesignPatternsPHP/tree/master/Creational/Prototype .. __: http://en.wikipedia.org/wiki/Prototype_pattern diff --git a/Creational/Prototype/Tests/PrototypeTest.php b/Creational/Prototype/Tests/PrototypeTest.php new file mode 100644 index 0000000..31d906f --- /dev/null +++ b/Creational/Prototype/Tests/PrototypeTest.php @@ -0,0 +1,27 @@ +setTitle('Foo Book No ' . $i); + $this->assertInstanceOf('DesignPatterns\Creational\Prototype\FooBookPrototype', $book); + } + + for ($i = 0; $i < 5; $i++) { + $book = clone $barPrototype; + $book->setTitle('Bar Book No ' . $i); + $this->assertInstanceOf('DesignPatterns\Creational\Prototype\BarBookPrototype', $book); + } + } +} diff --git a/Creational/Prototype/index.php b/Creational/Prototype/index.php deleted file mode 100644 index d0f6e94..0000000 --- a/Creational/Prototype/index.php +++ /dev/null @@ -1,17 +0,0 @@ -setTitle('Foo Book No '.$i); -} - -for ($i = 0; $i < 5000; $i++) { - $book = clone $barPrototype; - $book->setTitle('Bar Book No '.$i); -}