Browse Source

Added getPlugin() and setPlugin() methods for easy plugin name access.

Robert Pustułka 8 years ago
parent
commit
334b4aa67b
2 changed files with 85 additions and 48 deletions
  1. 29 6
      src/Controller/Controller.php
  2. 56 42
      tests/TestCase/Controller/ControllerTest.php

+ 29 - 6
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 @@ class Controller implements EventListenerInterface, EventDispatcherInterface
         ];
         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 @@ class Controller implements EventListenerInterface, EventDispatcherInterface
         ];
         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;
         }
@@ -447,6 +447,31 @@ class Controller implements EventListenerInterface, EventDispatcherInterface
     }
 
     /**
+     * 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.
      *
      * @return bool
@@ -500,9 +525,7 @@ class Controller implements EventListenerInterface, EventDispatcherInterface
      * 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

+ 56 - 42
tests/TestCase/Controller/ControllerTest.php

@@ -1100,6 +1100,20 @@ class ControllerTest extends TestCase
     }
 
     /**
+     * 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.
      *
      * @return void
@@ -1156,48 +1170,48 @@ class ControllerTest extends TestCase
         $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