Articles of oop

PHP Type Hinting: поддерживается массив, объект NOT?

Я что-то упустил или нет поддержки универсального типа объекта, намекающего на PHP 5.x? Мне очень странно, что намеки на массивы поддерживаются, в то время как намекающие объекты не являются, по крайней мере, не из коробки. Я хотел бы иметь что-то вроде этого: function foo(object $o) Так же, как у нас: function foo(array $o) Пример возможного […]

PHP 5.4: Получение Полноценного имени класса переменной экземпляра

Я знаю, что на PHP 5.5 есть статическое поле class , но я должен придерживаться PHP 5.4. Можно ли получить полное имя класса из переменной? Пример: namespace My\Awesome\Namespace class Foo { } И еще где-то в коде: public function bar() { $var = new \My\Awesome\Namespace\Foo(); // maybe there's something like this?? $fullClassName = get_qualified_classname($var); // […]

Переопределение стратегии генерации идентификатора по умолчанию не влияет на ассоциации

Symfony 2.7.2. Доктрина ORM 2.4.7. MySQL 5.6.12. PHP 5.5.0. У меня есть сущность с пользовательской системой генерации идентификатора. Он работает безупречно. В некоторых случаях мне приходится переопределять эту стратегию с помощью «ручной работы». Он работает, когда основной объект размывается без ассоциаций. Но это не работает с ассоциациями. Эта ошибка примера выбрана: Исключение произошло при выполнении […]

Проверка php, если метод переопределен в дочернем классе

Можно ли проверить, был ли метод переопределен дочерним классом в PHP? <!– language: lang-php –> class foo { protected $url; protected $name; protected $id; var $baz; function __construct($name, $id, $url) { $this->name = $name; $this->id = $id; $this->url = $url; } function createTable($data) { // do default actions } } Класс ребенка: class bar extends […]

Объект PHP ориентирован или нет?

У меня есть начало webapp, которое я написал без использования объектно-ориентированных функций PHP. Я действительно не знаю, стоит ли возвращаться и переписывать детали, которые я закончил. Является ли объектно-ориентированный PHP-ресурс переписывать все или часть достойного рабочего приложения?

Наследование PHP, родительские функции с использованием дочерних переменных

При просмотре кода PHP я обнаружил странную вещь. Вот его пример: Файл A.php: <?php class A{ public function methodA(){ echo $this->B; } } ?> Файл B.php: <?php class B extends A{ public $B = "It's working!"; } ?> Файл test.php: <?php require_once("A.php"); require_once("B.php"); $b = new B(); $b->methodA(); ?> Запуск test.php выводит «Работает!», Но вопрос […]

Существуют ли случаи, когда деструктор в PHP НЕ вызывается?

Это моя первая публикация в stackoverflow, но я эти темы очень помогли мне! Anywho, на мой вопрос … есть ли какие-то случаи, когда деструктор в PHP НЕ вызывается? Причина, по которой я спрашиваю, заключается в том, что у меня есть класс сопоставления, который сопоставляет данные с объектами и конструктором, я запускаю транзакцию, а в деструкторе […]

PHP, новый класс переменных в пространстве имен

Я экспериментирую с функциональностью namespacing PHP 5.3, и я просто не могу понять, как создать экземпляр нового класса с префиксом пространства имен. В настоящее время это прекрасно работает: <?php new $className($args); ?> Но как я могу добавить свое пространство имен перед переменной classname? Следующий пример не работает. <?php new My\Namespace\$className($args); ?> В этом примере получается: […]

Создавать объект без вызова его конструктора в PHP

Чтобы восстановить состояние объекта, который был сохранен, я хотел бы создать пустой экземпляр класса без вызова его конструктора, чтобы позже установить свойства с помощью Reflection . Единственный способ, которым я нашел, как это делает Doctrine , – создать поддельную сериализацию объекта и unserialize() : function prototype($class) { $serialized = sprintf('O:%u:"%s":0:{}', strlen($class), $class); return unserialize($serialized); } […]

Объектно-ориентированное программирование -> Оператор

Возможный дубликат: Ссылка. Что означает этот символ в PHP? Поэтому я читал книгу « Решения для PHP», «Динамический веб-дизайн», созданный Дэвидом Пауэрсом. Я прочитал короткий раздел об объектно-ориентированном PHP, и мне трудно понять идею оператора ->. Может ли кто-нибудь попытаться дать мне обоснованное объяснение оператора -> в OOP PHP? Пример: $westcost = new DateTimeZone('America/Los_Angeles'); $now->setTimezone($westcoast); […]