Для меня это не имеет смысла: class A { public static $value = "a"; public static function get_value(){ return self::$value; } } echo A::$value; // a, this makes sense echo A::get_value(); // a, this makes sense class B extends A { public static $value = "b"; } echo B::$value; // b, this makes sense echo […]
Допустим, у меня есть: class Zebra{ public static function action(){ print 'I was called from the '.get_class().' class'; // How do I get water here? } } class Water{ public static function drink(){ Zebra::action(); } } Water::drink(); Как получить «воду» из класса зебры? (Это для php 5.3)
Было ли обсуждение с коллегой о том, что это плохая практика или нет. Теперь я не могу найти немедленные примеры этого онлайн. У нас много картотекторов объектов базы данных, и мы называем его такими функциями (пример) – метод setId получает строку из базы данных и устанавливает ее в предопределенные свойства class Person { public static […]
Это мой код: class MyClass { public $prop; public function method () { echo $this->prop; } } Затем где-то в коде, случайно: MyClass::method(); Я ожидал бы ошибки интерпретации в указанной выше строке, потому что вызываемый метод не является статическим. Вместо этого метод был вызван, и я получил исключение из $ prop not existing. Поэтому я […]
Идиома, обычно используемая в языках OO, таких как Python и Ruby, создает объекты и методы цепочки, которые возвращают ссылку на сам объект, например: s = User.new.login.get_db_data.get_session_data В PHP можно воспроизвести это поведение так: $u = new User(); $s = $u->login()->get_db_data()->get_session_data(); Попытка получить следующие результаты при syntax error, unexpected T_OBJECT_OPERATOR : $s = new User()->login()->get_db_data()->get_session_data(); Похоже, […]
Я не занимаюсь объектно-ориентированным программированием, и у меня возникает глупый вопрос: class test { public static function doSomething($arg) { $foo = 'I ate your ' . $arg; return $foo; } } Таким образом, правильный способ вызова doSomething() – выполнить test::doSomething('Pizza'); , Я прав? Теперь, что произойдет, если я назову это так: $test = new test; […]
В настоящее время используется большая платформа в PHP. Сервер, на котором он размещен, недавно был обновлен до PHP 5.4. Поскольку, я получил много сообщений об ошибках, таких как: [Сб 26 мая 19:04:41 2012] [ошибка] PHP Строгие стандарты: нестатический метод Config :: getData () не следует вызывать статически, предполагая $ this из несовместимого контекста в /xxx/Config.inc.php […]
У меня есть дочерний класс, который расширяет класс только статическими методами. Я хотел бы сделать этот дочерний класс синглоном, а не статичным, потому что первоначальный разработчик действительно хотел одноэлемент, но вместо него использовал статический (очевидно, потому что каждый метод в статическом классе вызывает функцию Init () (в основном конструктор)). Большинство методов родителя не нужно перезаписывать […]
Я немного смущен этим. Я разрабатываю ORM-класс, который пытается вести себя аналогично ActiveRecord в ruby на рельсах, но это не относится к делу. Я пытаюсь сказать, что мой класс широко использует статическое наследование атрибутов, особенно для обработки баз данных и таблиц. Мой вопрос в том, должен ли я использовать self :: вообще?
У меня есть этот метод, который я хочу использовать $ this in, но все, что я получаю: Fatal error: использование $ this, если не в контексте объекта. Как я могу заставить это работать? public static function userNameAvailibility() { $result = $this->getsomthin(); }