Я запускаю Ubuntu + PHP 5.4 и получил такую ошибку: Строгие стандарты: нестатический метод XTemplate :: I () не следует называть статическим, предполагая $ this из несовместимого контекста в … на строке 339 И этот метод выглядит так: interface ITemplate { public function I(); } class XTemplate implements ITemplate { public function I() { … […]
Ниже приведены примеры кода класса php, который является статическим методом и нестационарным методом. Пример 1: class A{ //None Static method function foo(){ if (isset($this)) { echo '$this is defined ('; echo get_class($this); echo ")<br>"; } else { echo "\$this is not defined.<br>"; } } } $a = new A(); $a->foo(); A::foo(); //result $this is defined […]
class A { public static $foo = 42; } $class = 'A'; $attribute = 'foo'; var_dump(isset($class::$attribute)); //gives bool(false) Как я могу проверить этот атрибут static в этом классе?
В этом вопросе StackOverflow я узнал, что self:: не было наследованием, когда static:: was (в PHP). Когда дело доходит до определения группы констант внутри класса, если вы хотите переопределить эти константы в подклассе для изменения по умолчанию «поведения», становится необходимо использовать static:: так, чтобы метод родительского класса, который ссылается на константу , чтит «переопределение». В […]
Мне нужно знать, объявлен ли метод как статический, учитывая его имя и имя класса, содержащего его. method_exists предоставляет true как для статических, так и для нестатических методов.
Много раз я слышал, чтобы избежать статических классов, потому что они будут вставлять зависимости, которые сделают ваш код непригодным для использования в других проектах и не позволят ему его протестировать . Допустим, у нас есть типичная class DB для доступа к базе данных, если такой класс является static мы могли бы называть его везде в […]
Я начал изучать OO несколько дней назад, я вполне уверен в процедурной кодировке, но, очевидно, этого недостаточно, и я хочу стать хорошо разбирающимся кодером с большим опытом и знаниями, поэтому первое, что нужно полностью изучить, должно быть OO я думаю, правильные шаблоны дизайна. Во всяком случае, у меня есть одна вещь, где я застрял, и […]
Я пытаюсь вызвать статическую магическую функцию ( __callStatic ) из члена своего дочернего класса. Проблема заключается в том, что вместо этого она переходит на нестатический __call . <?php ini_set("display_errors", true); class a { function __call($method, $params) { echo "instance"; } static function __callStatic($method, $params) { echo "static"; } } class b extends a { function […]
У меня есть это: одна строковая переменная, которая содержит имя класса ( $classname ) одна строковая переменная с именем свойства ( $propertyname ) Я хочу получить это свойство из этого класса, проблема в том, что свойство является статическим, и я не знаю, как это сделать. Если свойство не было статическим, это было бы: $classname->$propertyname; если […]
Как я могу заставить PHP оценивать статическую переменную в двойных кавычках? Я хочу сделать что-то вроде этого: log("self::$CLASS $METHOD entering"); Я пробовал всевозможные {} комбо, чтобы получить значение переменной self :: $ CLASS, но ничего не сработало. Я в настоящее время соглашался с конкатенацией строк, но больно печатать: log(self::$CLASS . " $METHOD entering");