Цитата (Alexander @ 2013-04-06, 0:34)
Как тогда вызывать статических методы из динамических?
Всё-всё-всё этот момент я понял. Вчера сидел, размышлял. Спасибо большое
Цитата (Alexander @ 2013-04-06, 0:34)
Что-то я не вижу у вас в коде __callStatic() . Вот и вызывает php у вас метод call.
1. Где регламентируется такое поведение, что если в статическом контексте вызывают несуществующий метод, а __callStatic() не существует, то перебрасываем обращение в __call()?
Кстати добавил в код __callStatic() - игнорируется он. Всё равно идёт вызов в __call()
2. Это раньше когда не было __callStatic() вызов несуществующего метода из любого контекста обращался в __call().
3. Тут, похоже, дело в другом. Я пошёл в
мануал почитать ещё раз о перегрузке __call и callStatic().
Вот выдержка:
Цитата
public mixed __call ( string $name , array $arguments )
public static mixed __callStatic ( string $name , array $arguments )
В контексте объекта при вызове недоступных методов вызывается метод __call().
В статическом контексте при вызове недоступных методов вызывается метод __callStatic().
Прошу мне объяснить тогда, что такое статический контекст. И почему в выше приведённом коде self::Launch(); не является в статическом контекстом?
Пока в голову приходит только мысль, что раз вызов self::Launch(); осуществляется из контекста объекта, то каким образом мы вызываем метод - нам неважно, контекст так и будет контекстом объекта. Но я не видел нигде пояснений такого поведения.