设置声明的公共属性时调用方法

时间:2014-10-16 01:51:05

标签: php oop properties overloading magic-methods

我遇到的问题是__set()魔术方法,按设计,仅适用于未声明的属性。是否有一个__set()类似于声明属性的解决方案,我可以在设置属性时调用方法?声明的属性将大大增加我正在设计的类的易用性,特别是对于IDE。

1 个答案:

答案 0 :(得分:1)

不,您不能将任何魔法用于当前范围内声明或可见的属性和方法。如果在类中找不到声明,Php只会调用它们。这就是documentation对此所说的内容:

  

在与尚未声明或在当前作用域中不可见的属性或方法交互时,将调用重载方法。

但是你可以帮助大多数IDE,特别是PhpStorm,我确信Netbeans也支持它,通过为类提供属性和方法的PHPDoc:

/**
 * @property string $myProperty
 * @method string myMethod(int $param = 10)
 */
class MyClass
{
}