我遇到的问题是__set()魔术方法,按设计,仅适用于未声明的属性。是否有一个__set()类似于声明属性的解决方案,我可以在设置属性时调用方法?声明的属性将大大增加我正在设计的类的易用性,特别是对于IDE。
答案 0 :(得分:1)
不,您不能将任何魔法用于当前范围内声明或可见的属性和方法。如果在类中找不到声明,Php只会调用它们。这就是documentation对此所说的内容:
在与尚未声明或在当前作用域中不可见的属性或方法交互时,将调用重载方法。
但是你可以帮助大多数IDE,特别是PhpStorm,我确信Netbeans也支持它,通过为类提供属性和方法的PHPDoc:
/**
* @property string $myProperty
* @method string myMethod(int $param = 10)
*/
class MyClass
{
}