Помогите разобраться, пожалуйста.
PHP:
скопировать код в буфер обмена
class Up { public $var; public function run(){ Down::set_var(); } } class Down extends Up{ public static function set_var(){ $this->var = 'Var'; } } $up = new Up; $up->run();
Пишет (из-за попытки использовать $this в статической функции)
Цитата:Fatal error: Using $this when not in object context in ...
Как правильно работать со статическими функциями ? Что в них такого кроме облегченного вызова ?
Если я делаю функцию не статической и делаю не
а
То все работает
П.С.
Если установлено
Показывает
Цитата:Strict Standards: Non-static method Down::set_var() should not be called statically, assuming $this from incompatible context in ...
(Добавление)
Нашел вот
Цитата:Обратите внимание, что статические методы можно вы-
зывать также и из содержимого объекта, на основе которого был создан экземпляр; одна-
ко они не имеют доступа к переменной экземпляра $this
Но просто хочу избавиться от
И все переменные инициализировать в родительском классе и так будет
А то когда нужно пару таких рядом вставить в html строку не удобно читать, а если разбить на две строки тоже не всегда удобно
(Добавление)
Ну а если использую не $this->var, а self::$var, а $var делаю статическим в классе где и статическая функция, то
Цитата:Notice: Undefined variable: var in ...
Помогите разобраться, пожалуйста. (Отредактировано автором: 22 Сентября, 2013 - 01:36:37)
|