Почему магические методы 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,

Другие вопросы по тегам