From 334b4aa67b504b71f31f52c82e35f1d24ed4b4e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Pustu=C5=82ka?= Date: Tue, 26 Sep 2017 09:51:16 +0200 Subject: [PATCH] Added getPlugin() and setPlugin() methods for easy plugin name access. --- src/Controller/Controller.php | 35 +++++-- tests/TestCase/Controller/ControllerTest.php | 98 +++++++++++--------- 2 files changed, 85 insertions(+), 48 deletions(-) diff --git a/src/Controller/Controller.php b/src/Controller/Controller.php index 9529a07bd2f..4126a2b5a61 100644 --- a/src/Controller/Controller.php +++ b/src/Controller/Controller.php @@ -213,9 +213,8 @@ class Controller implements EventListenerInterface, EventDispatcherInterface * Automatically set to the name of a plugin. * * @var string - * @deprecated 3.6.0 Use `$this->request->getParam('plugin')` instead. */ - public $plugin; + protected $plugin; /** * Holds all passed params. @@ -348,7 +347,7 @@ public function __get($name) ]; if (isset($deprecated[$name])) { $method = $deprecated[$name]; - deprecationWarning(sprintf('Controller::$%s is deprecated. Use $this->%s() instead.', $name, $method)); +// deprecationWarning(sprintf('Controller::$%s is deprecated. Use $this->%s instead.', $name, $deprecated[$name]['method'])); return $this->{$method}(); } @@ -391,13 +390,14 @@ public function __set($name, $value) ]; if (isset($deprecated[$name])) { $method = $deprecated[$name]; - deprecationWarning(sprintf('Controller::$%s is deprecated. Use $this->%s() instead.', $name, $method)); +// deprecationWarning(sprintf('Controller::$%s is deprecated. Use $this->%s() instead.', $name, $method)); $this->{$method}($value); return; } if ($name === 'autoRender') { $value ? $this->enableAutoRender() : $this->disableAutoRender(); +// deprecationWarning(sprintf('Controller::$%s is deprecated. Use $this->enableAutoRender/disableAutoRender() instead.', $name)); return; } @@ -446,6 +446,31 @@ public function setName($name) return $this; } + /** + * Returns the plugin name. + * + * @return string + * @since 3.6.0 + */ + public function getPlugin() + { + return $this->plugin; + } + + /** + * Sets the plugin name. + * + * @param string $name Plugin name. + * @return $this + * @since 3.6.0 + */ + public function setPlugin($name) + { + $this->plugin = $name; + + return $this; + } + /** * Returns true if an action should be rendered automatically. * @@ -500,9 +525,7 @@ public function getRequest() * which must also be updated here. The properties that get set are: * * - $this->request - To the $request parameter - * - $this->plugin - To the $request->params['plugin'] * - $this->passedArgs - Same as $request->params['pass] - * - View::$plugin - $this->plugin * * @param \Cake\Http\ServerRequest $request Request instance. * @return $this diff --git a/tests/TestCase/Controller/ControllerTest.php b/tests/TestCase/Controller/ControllerTest.php index 203937137c9..a293b9bb659 100644 --- a/tests/TestCase/Controller/ControllerTest.php +++ b/tests/TestCase/Controller/ControllerTest.php @@ -1099,6 +1099,20 @@ public function testName() $this->assertEquals('Articles', $controller->getName()); } + /** + * Test plugin getter and setter. + * + * @return void + */ + public function testPlugin() + { + $controller = new PostsController(); + $this->assertEquals('', $controller->getPlugin()); + + $this->assertSame($controller, $controller->setPlugin('Articles')); + $this->assertEquals('Articles', $controller->getPlugin()); + } + /** * Test request getter and setter. * @@ -1156,48 +1170,48 @@ public function testAutoRender() $this->assertSame($controller, $controller->enableAutoRender()); $this->assertTrue($controller->isAutoRenderEnabled()); } - - /** - * Tests deprecated controller properties work - * - * @param $property Deprecated property name - * @param $getter Getter name - * @param $setter Setter name - * @param mixed $value Value to be set - * @return void - * @dataProvider deprecatedControllerPropertyProvider - */ - public function testDeprecatedControllerProperty($property, $getter, $setter, $value) - { - $controller = new AnotherTestController(); - $message = false; - - set_error_handler(function ($errno, $errstr) use (&$message) { - $message = ($errno === E_USER_DEPRECATED ? $errstr : false); - }); - - try { - $controller->$property = $value; - - $this->assertSame($value, $controller->$property); - $this->assertSame($value, $controller->{$getter}()); - } finally { - restore_error_handler(); - } - } - - /** - * Data provider for testing deprecated view properties - * - * @return array - */ - public function deprecatedControllerPropertyProvider() - { - return [ - ['name', 'getName', 'setName', 'Foo'], - ['autoRender', 'isAutoRenderEnabled', 'enableAutoRender/disableAutoRender', false], - ]; - } +// +// /** +// * Tests deprecated controller properties work +// * +// * @param $property Deprecated property name +// * @param $getter Getter name +// * @param $setter Setter name +// * @param mixed $value Value to be set +// * @return void +// * @dataProvider deprecatedControllerPropertyProvider +// */ +// public function testDeprecatedControllerProperty($property, $getter, $setter, $value) +// { +// $controller = new AnotherTestController(); +// $message = false; +// +// set_error_handler(function ($errno, $errstr) use (&$message) { +// $message = ($errno === E_USER_DEPRECATED ? $errstr : false); +// }); +// +// try { +// $controller->$property = $value; +// +// $this->assertSame($value, $controller->$property); +// $this->assertSame($value, $controller->{$getter}()); +// } finally { +// restore_error_handler(); +// } +// } +// +// /** +// * Data provider for testing deprecated view properties +// * +// * @return array +// */ +// public function deprecatedControllerPropertyProvider() +// { +// return [ +// ['name', 'getName', 'setName', 'Foo'], +// ['autoRender', 'isAutoRenderEnabled', 'enableAutoRender/disableAutoRender', false], +// ]; +// } /** * Tests deprecated view properties work