У меня есть два фрагмента кода (относительно static ключевого слова), которые я ожидаю, что они будут иметь одинаковый вывод, но на самом деле выходы разные. Вопрос в том, почему? Фрагмент 1 class base { public static $var = 1; } class sub extends base { public static $var = 2; } echo base::$var; // Outputs […]
У меня есть сайт PHP / mySQL, который больше не собирается добавлять новый контент. Но я хотел бы сохранить то, что у меня есть, как архив и держать его в сети. В идеале я хотел бы преобразовать его в статический сайт, чтобы он больше не нуждался в базе данных. Если кто-то еще прошел этот процесс, […]
Я понимаю, что singleton применяет класс, который будет создан один раз. Но почему экземпляр существует, если я не получаю его напрямую? Почему этот шаблон для, не проще ли просто использовать полный статический класс со статическими методами и данными?
В PHP можно сделать что-то вроде этого: myFunction( MyClass::staticMethod ); так что «myFunction» будет ссылаться на статический метод и иметь возможность его вызвать. Когда я пытаюсь, я получаю сообщение об ошибке «Неопределенная константа класса» (PHP 5.3), поэтому, я думаю, это невозможно, но есть ли способ сделать что-то подобное? Самое близкое, что мне удалось до сих […]
Согласно руководству PHP , класс вроде этого: abstract class Example {} не может быть создан. Если мне нужен класс без экземпляра, например, для шаблона реестра: class Registry {} // and later: echo Registry::$someValue; считалось бы хорошим стилем просто объявить класс абстрактным? Если нет, то каковы преимущества скрытия конструктора в качестве защищенного метода по сравнению с […]
У меня есть два статических значения: «type» и «typeID». Тип является читаемым человеком и постоянным, а typeID необходимо искать из базы данных на основе значения типа. Мне нужно, чтобы поиск выполнялся один раз, когда сначала загружается определение класса Чтобы проиллюстрировать, вот какой-то код, который не работает, потому что вы не можете вызывать функции в пространстве […]
В PHP вы можете вызвать статический метод класса из экземпляра объекта (который содержится в массиве) следующим образом: $myArray['instanceOfMyClass']::staticMethod(); // works Но по какой-то причине, когда я использую $this переменную $this , я получаю ошибку синтаксического анализа. Например: $this->myArray['instanceOfMyClass']::staticMethod(); // PARSING ERROR Чтобы проиллюстрировать, что я имею в виду: class MyClass{ public static function staticMethod(){ echo […]
Как я могу проверить, был ли объявлен статический класс? ex Учитывая класс class bob { function yippie() { echo "skippie"; } } позже в коде, как я могу проверить: if(is_a_valid_static_object(bob)) { bob::yippie(); } поэтому я не получаю: Fatal error: Class 'bob' не найден в файле.php в строке 3
Я хочу проверить, существует ли функция в библиотеке, которую я создаю, которая является статической. Я видел функции и методы_exists, но не нашел способ, который позволяет мне называть их в относительном контексте. Вот лучший пример: class myClass{ function test1() { if(method_exists("myClass", "test1")) { echo "Hi"; } } function test2() { if(method_exists($this, "test2")) { echo "Hi"; } […]
Я недавно сделал обновление для PHP 5.4, и я получаю сообщение об ошибке статического и нестатического кода. Это ошибка: PHP Strict Standards: Non-static method VTimer::get() should not be called statically in /home/jaco/public_html/include/function_smarty.php on line 371 Это строка 371: $timer = VTimer::get($options['magic']); Надеюсь, кто-то может помочь.