<?php
class AAA
{
protected $test;
public function __construct($a)
{
$this->test = $a;
}
}
class BBB extends AAA
{
public function __construct()
{
parent::__construct($a); // неизвестная переменная $a, так а откуда я тут возьму параметр $a?
}
}
new BBB;
$this->test была создана в родителе и уже была в потомке без передачи в парент параметра $a
так я и спрашиваю
неизвестная переменная $a, так а откуда я тут возьму параметр $a?- а нафига ты тогда в конструкторе пишешь переменную? Задай ей значение по-умолчанию если её не каждый раз нужно определять.
<?php
class A
{
protected $test;
public function __construct($a = 10)
{
$this->test = $a;
}
}
class B extends A
{
public function __construct()
{
//...
}
}
$b = new B();
var_dump($b);
class A создаётся с передачей параметра в него, потом нужно создать потомка B и в нём юзать свой конструктор и $this->test, которое присвоено в A
что не так
class A создаётся с передачей параметра в него
мне нужно чтобы $this->test была создана в родителе и уже была в потомке
class AAA
{
protected $test;
public function __construct($a)
{
$this->test = $a;
}
}
class BBB extends AAA
{
public function __construct($a)
{
parent::__construct($a);
var_dump($this->test); // string(8) "Тест"
}
}
new BBB('Тест');
class AAA
{
public $test;
public function __construct($a = 123)
{
$this->test = $a;
}
}
class BBB extends AAA {}
echo (new BBB())->test; // 123
class BBB extends AAA {
public function __construct()
{
parent::__construct(); // всегда надо вызывать конструктор родительского класса.
var_dump($this->test);
}
}
class A {
protected static $name = "Default Name";
public static function updateName($name) {
self::$name = $name;
}
}
class B extends A {
public function getName() {
return self::$name;
}
}
$b = new B();
echo $b->getName(); // Default Name
A::updateName("Vasea Pupkin");
echo $b->getName(); // Vasea Pupkin