у меня есть 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;
Это нормально делать так?
Я не вижу никаких проблем с этим. Если у вас есть несколько классов, которые все выиграют от родительского класса, структурированного таким образом, это упрощает добавление другого метода или другой переменной ко всем дочерним классам одновременно в будущем. Я также проверил, как 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"}
Это было для меня больше, чем что-либо, но я думал, что добавлю это, если это поможет другим, кто сталкивается с этим.
Других решений пока нет …