我在php类中使用神奇的方法,但是当我尝试将它们设为私有时,会收到警告:
警告:magic方法get()必须具有公共可见性,并且不能
静止在…
我不想在eclipse自动完成中使用这些方法。(也许是与phpdoc合作的一种方式?)
所以我的问题是,为什么这些方法必须公开?
最佳答案
因为您是从类之外的作用域调用方法。
例如:
// this can be any class with __get() and __set methods
$YourClass = new YourOverloadableClass();
// this is an overloaded property
$YourClass->overloaded = 'test';
上述代码“转换”为:
$YourClass->__set('overloaded', 'test');
稍后,当您获得属性值时,例如:
$var = $YourClass->overloaded;
此代码“转换”为:
$YourClass->__get('overloaded');
在每种情况下,magic方法
__get
和__set
都是从类外部调用的,因此这些方法将需要public
。