我在我的PHP课程中使用了神奇的方法,但是当我尝试将它们设为私有时,我会收到警告:
警告:魔术方法__get()必须具有公共可见性,但不能 在......中是静止的。
我不希望在Eclipse自动完成中使用这些方法。 (也许是phpdoc的一种方式?) 所以我的问题是,为什么这些方法必须公开?
答案 0 :(得分:7)
因为您正在从类外部的作用域调用方法。
例如:
// 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');
在每种情况下,都会从类外部调用魔术方法__get
和__set
,因此这些方法需要为public
。