diff --git a/Behavioral/Observer/Tests/ObserverTest.php b/Behavioral/Observer/Tests/ObserverTest.php index d9dacec..6a3f369 100644 --- a/Behavioral/Observer/Tests/ObserverTest.php +++ b/Behavioral/Observer/Tests/ObserverTest.php @@ -57,7 +57,7 @@ class ObserverTest extends \PHPUnit_Framework_TestCase public function testUpdateCalling() { $subject = new User(); - $observer = $this->getMock('SplObserver'); + $observer = $this->createMock('SplObserver'); $subject->attach($observer); $observer->expects($this->once()) diff --git a/Makefile b/Makefile index 52169e6..c3841a2 100644 --- a/Makefile +++ b/Makefile @@ -190,3 +190,20 @@ pseudoxml: $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml @echo @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." + +composer.phar: + php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" + php -r "if (hash_file('SHA384', 'composer-setup.php') === 'e115a8dc7871f15d853148a7fbac7da27d6c0030b848d9b3dc09e2a0388afed865e6a3d6b3c0fad45c48e2b5fc1196ae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" + php composer-setup.php + php -r "unlink('composer-setup.php');" + +install: vendor + +vendor: composer.phar + php composer.phar install + +cs: install + ./vendor/bin/phpcs -p --standard=PSR2 --ignore=vendor . + +test: install cs + ./vendor/bin/phpunit diff --git a/Structural/Decorator/Tests/DecoratorTest.php b/Structural/Decorator/Tests/DecoratorTest.php index 689caf2..2878772 100644 --- a/Structural/Decorator/Tests/DecoratorTest.php +++ b/Structural/Decorator/Tests/DecoratorTest.php @@ -73,7 +73,7 @@ class DecoratorTest extends \PHPUnit_Framework_TestCase */ public function testDecoratorOnlyAcceptRenderer() { - $mock = $this->getMock('DesignPatterns\Structural\Decorator\RendererInterface'); + $mock = $this->createMock('DesignPatterns\Structural\Decorator\RendererInterface'); $dec = $this->getMockForAbstractClass('DesignPatterns\Structural\Decorator\Decorator', array($mock)); $this->assertNotNull($dec); } diff --git a/Structural/Proxy/Record.php b/Structural/Proxy/Record.php index 7ae4a3c..fd9bb0c 100644 --- a/Structural/Proxy/Record.php +++ b/Structural/Proxy/Record.php @@ -8,44 +8,44 @@ namespace DesignPatterns\Structural\Proxy; class Record { /** - * @var array|null + * @var string[] */ - protected $data; + private $data; /** - * @param null $data + * @param string[] $data */ - public function __construct($data = null) + public function __construct(array $data = []) { - $this->data = (array) $data; + $this->data = $data; } /** - * magic setter. + * magic setter * * @param string $name * @param mixed $value * * @return void */ - public function __set($name, $value) + public function __set(string $name, string $value) { - $this->data[(string) $name] = $value; + $this->data[$name] = $value; } /** - * magic getter. + * magic getter * * @param string $name * - * @return mixed|null + * @return string|null */ - public function __get($name) + public function __get(string $name): string { - if (array_key_exists($name, $this->data)) { - return $this->data[(string) $name]; + if (isset($this->data[$name])) { + return $this->data[$name]; } else { - return; + return null; } } } diff --git a/Structural/Proxy/RecordProxy.php b/Structural/Proxy/RecordProxy.php index f8c78a8..2432e01 100644 --- a/Structural/Proxy/RecordProxy.php +++ b/Structural/Proxy/RecordProxy.php @@ -2,25 +2,22 @@ namespace DesignPatterns\Structural\Proxy; -/** - * Class RecordProxy. - */ class RecordProxy extends Record { /** * @var bool */ - protected $isDirty = false; + private $isDirty = false; /** * @var bool */ - protected $isInitialized = false; + private $isInitialized = false; /** * @param array $data */ - public function __construct($data) + public function __construct(array $data) { parent::__construct($data); @@ -28,23 +25,30 @@ class RecordProxy extends Record // since Record will hold our business logic, we don't want to // implement this behaviour there, but instead in a new proxy class // that extends the Record class - if (null !== $data) { + if (count($data) > 0) { $this->isInitialized = true; $this->isDirty = true; } } /** - * magic setter. + * magic setter * * @param string $name - * @param mixed $value - * - * @return void + * @param string $value */ - public function __set($name, $value) + public function __set(string $name, string $value) { $this->isDirty = true; + parent::__set($name, $value); } + + /** + * @return bool + */ + public function isDirty(): bool + { + return $this->isDirty; + } } diff --git a/Structural/Proxy/Tests/ProxyTest.php b/Structural/Proxy/Tests/ProxyTest.php new file mode 100644 index 0000000..955282f --- /dev/null +++ b/Structural/Proxy/Tests/ProxyTest.php @@ -0,0 +1,25 @@ +foobar = 'baz'; + + $this->assertTrue($recordProxy->isDirty()); + } + + public function testProxyIsInstanceOfRecord() + { + $recordProxy = new RecordProxy([]); + $recordProxy->foobar = 'baz'; + + $this->assertInstanceOf('DesignPatterns\Structural\Proxy\Record', $recordProxy); + } +}