我在我的 PHP 类中使用了神奇的方法,但是当我尝试将它们设为私有时,我被警告:
警告:魔术方法 __get() 必须具有公共可见性,并且不能在 ...
我不想在 Eclipse 自动完成中使用这些方法。(也许是 phpdoc 的一种方式?)所以我的问题是,为什么这些方法必须公开?
我在我的 PHP 类中使用了神奇的方法,但是当我尝试将它们设为私有时,我被警告:
警告:魔术方法 __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');
在每种情况下,魔术方法__get
和__set
都是从类外部调用的,因此这些方法需要是public
.