Articles of Наследование

Суперкласс и подкласс PHP

Простой вопрос, имеет ли смысл следующее? Класс B расширяет класс A класс A: function __construct(){ //do something } Конструктор класса B: function __construct(){ parent::__construct(); } Есть ли существенное преимущество для реализации дочернего конструктора вообще в этом случае? Я могу только подумать: Весь код для класса B будет более «полным» в структуре Было бы интересно узнать, […]

Эмулировать множественное наследование в php

У меня есть система моделей: abstract class R00_Model_iUnique { } abstract class R00_Model_iFamilyUnique extends R00_Model_iUnique { } // for models with hierarchy abstract class R00_Model_iTaggedUnique extends R00_Model_iUnique { } // for models with tags // and, for example class R00_Model_User extends R00_Model_iUnique { } class R00_Model_Comment extends R00_Model_iFamilyUnique { } class R00_Model_Post extends R00_Model_iTaggedUnique { […]

Использование $ this, если не в объектном контексте php

Я только начал изучать OOPS в php. Я написал простую программу для реализации наследования. Я получаю фатальную ошибку $ this, если не в контексте объекта. Может ли кто-нибудь объяснить мне эту ошибку, что это значит? вот мой код: <?php class human{ public $gender; public function _construct($gender) { $this->gender=$gender; echo $this->get_gender(); } public function get_gender() { […]

Неопределенная переменная в программе

Я пытаюсь написать для написания программы, но получаю некоторые ошибки. Базовый класс автомобиля текущая скорость (свойство) – значение по умолчанию 0 ускорение (метод) диск (метод) brand (property) – значение по умолчанию «unknown» max speed (свойство) – значение по умолчанию 0 Автомобильный класс Camaro Наследует базовый автомобиль brand (свойство) – значение по умолчанию «Chevy» максимальная скорость […]

Как продлить PHP DOMElement?

a.php #!/usr/bin/php <?php class HtmlTable extends DOMElement { public function __construct($height, $width) { parent::__construct("table"); for ($i = 0; $i < $height; ++$i) { $row = $this->appendChild(new DOMElement("tr")); for($j = 0; $j < $width; ++$j) { $row->appendChild(new DOMElement("td")); } } } } $document = new DOMDocument("1.0", "UTF-8"); $document->registerNodeClass("DOMElement", "HtmlTable"); $document->appendChild(new HtmlTable(3, 2)); $document->saveXML(); Запуск этого Fatal […]

Тип возврата «self» в абстрактном классе PHP

PHP 7.1 В настоящее время я пытаюсь создать абстрактный класс, чтобы обеспечить и определить и частично реализовать функциональность своих «дочерних классов». Здесь я использую следующую конструкцию: abstract class Parent { public static function fromDB(string $name = '') { $instance = new static(); if (!empty($name)) { $instance->setName($name)->read(); } return $instance; } public abstract function read(); public […]

Понимание наследования в php

Я новичок в использовании ООП в PHP (и вообще), и у меня возник вопрос о наследовании. У меня есть следующие классы: class OCITable { public function display() { $this->drawHeader(); $this->drawFooter(); $this->drawBody(); } private function drawHeader() { … } private function drawFooter() { … } private function drawBody() { … } } class OCITableServer extends OCITable […]

Есть ли способ добиться множественного наследования в php?

Допустим, у меня есть родительский класс class parent { } ….. Этот родитель имеет три подкласса class child1 { } class child2 { } class child3 { } и эти дочерние классы имеют меньшие части, такие как class child1subpar1 { } class child1subpar2 { public function foo() { echo "hi"; } } class child2subpar1 { […]

Как вызвать конструктор родительских классов с его исходными параметрами в PHP

У меня есть этот код: class A { var $arr = array(); function __construct($para) { echo 'Not called'; } } class B extends A { function __construct() { $arr[] = 'new Item'; } } И так как B имеет свою конструкцию конструктора ($ para) A, никогда не будет вызвана. Теперь я мог бы вызвать parent […]

Наследование 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 выводит «Работает!», Но вопрос […]