Почему магические методы PHP должны быть публичными?
Я использую магические методы в своих классах PHP, но когда я пытаюсь сделать их приватными, меня предупреждают:
ВНИМАНИЕ: магический метод __get() должен иметь публичную видимость и не может быть статическим в...
Я не хотел бы иметь эти методы в автозаполнении Eclipse. (может быть, путь с phpdoc?) Итак, мой вопрос, почему эти методы должны быть публичными?
1 ответ
Решение
Потому что вы вызываете методы из области за пределами класса.
Например:
// 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
,