我在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

10-02 11:42