oop — PHP, использующий свойства родительского класса в качестве другого типа в дочернем классе

у меня есть 2 класса Node и ChildNode, ChildNode расширяет Node. Есть свойство в родительском:

class Node {
protected $discount;
public function __construct($discount) {
$this->discount = $discount;

и я использую его как целочисленное значение, в ChildNode мне нужно держать массив целочисленных значений

class ChildNode extends Node {
public function __construct(Array $discount) {
$this->discount = $discount;

Это нормально делать так?

0

Решение

Я не вижу никаких проблем с этим. Если у вас есть несколько классов, которые все выиграют от родительского класса, структурированного таким образом, это упрощает добавление другого метода или другой переменной ко всем дочерним классам одновременно в будущем. Я также проверил, как PHP обрабатывает наследование, так как я не был уверен на 100% в этом, а также потому, что php автоматически установит для вас переменные, если вы назначите что-то вроде $ this-> doesnotexistyet = «magic!»; однако ниже выводит следующее …

class A {

protected $d;

public function __construct() {
$this->d = "A";
}

public function getDP() {
return $this->d;
}

}

class B extends A {

public function __construct() {
$this->d = "B";
}

public function getD() {
return $this->d;
}

}

$a = new A();
echo $a->getDP() . PHP_EOL;

$b = new B();
echo $b->getD() . PHP_EOL;
echo $b->getDP() . PHP_EOL;

var_dump($a , $b);

Выход.

A
B
B
object(A)#1 (1) {
["d":protected]=>
string(1) "A"}
object(B)#2 (1) {
["d":protected]=>
string(1) "B"}

Это было для меня больше, чем что-либо, но я думал, что добавлю это, если это поможет другим, кто сталкивается с этим.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector