6

我在我的 PHP 类中使用了神奇的方法,但是当我尝试将它们设为私有时,我被警告:

警告:魔术方法 __get() 必须具有公共可见性,并且不能在 ...

我不想在 Eclipse 自动完成中使用这些方法。(也许是 phpdoc 的一种方式?)所以我的问题是,为什么这些方法必须公开?

4

1 回答 1

9

因为您正在从类之外的范围调用方法。

例如:

// 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.

于 2011-11-22T17:45:14.930 回答