Browse Source

Removed the support for calling anonymous function returned as a property value.

tags/2.0.0-beta
Qiang Xue 11 years ago
parent
commit
91b6e2945a
  1. 12
      framework/yii/base/Component.php
  2. 8
      framework/yii/base/Object.php
  3. 5
      tests/unit/framework/base/ObjectTest.php

12
framework/yii/base/Component.php

@ -179,9 +179,8 @@ class Component extends Object
/**
* Calls the named method which is not a class method.
* If the name refers to a component property whose value is
* an anonymous function, the method will execute the function.
* Otherwise, it will check if any attached behavior has
*
* This method will check if any attached behavior has
* the named method and will execute it if available.
*
* Do not call this method directly as it is a PHP magic method that
@ -193,13 +192,6 @@ class Component extends Object
*/
public function __call($name, $params)
{
if ($this->canGetProperty($name)) {
$func = $this->$name;
if ($func instanceof \Closure) {
return call_user_func_array($func, $params);
}
}
$this->ensureBehaviors();
foreach ($this->_behaviors as $object) {
if ($object->hasMethod($name)) {

8
framework/yii/base/Object.php

@ -143,8 +143,6 @@ class Object implements Arrayable
/**
* Calls the named method which is not a class method.
* If the name refers to a component property whose value is
* an anonymous function, the method will execute the function.
*
* Do not call this method directly as it is a PHP magic method that
* will be implicitly called when an unknown method is being invoked.
@ -155,12 +153,6 @@ class Object implements Arrayable
*/
public function __call($name, $params)
{
if ($this->canGetProperty($name)) {
$func = $this->$name;
if ($func instanceof \Closure) {
return call_user_func_array($func, $params);
}
}
throw new UnknownMethodException('Unknown method: ' . get_class($this) . "::$name()");
}

5
tests/unit/framework/base/ObjectTest.php

@ -134,11 +134,6 @@ class ObjectTest extends TestCase
$this->assertEquals('new text', $this->object->object->text);
}
public function testAnonymousFunctionProperty()
{
$this->assertEquals(2, $this->object->execute(1));
}
public function testConstruct()
{
$object = new NewObject(array('text' => 'test text'));

Loading…
Cancel
Save