Я создал два класса, присваивая переменную общедоступного класса переменной дочернего класса, но не работая должным образом. Но одна и та же переменная правильно назначает работу внутри функции. Я не получил надлежащей причины, почему это так. Пожалуйста, проверьте пример ниже.
<?php
Class pratice{
public $a=4;
}
Class child extends pratice{
//public $b =$this->a;//getting error with this assigment
public function getValue(){
$this->b = $this->a;//working fine with this
echo $this->b;
}
}
$obj = new child();
$obj->getValue();
?>
Заранее спасибо.
PD объявить свойство как объект? / Синтаксическая ошибка при определении массива как свойства класса ?






Ну, $this относится к экземпляру класса, поэтому, пока вы не создадите экземпляр класса, $this недоступен.
Вам придется сделать это в конструктор, когда он может ссылаться на себя в нестатическом контексте.
class Child extends Practice
{
public $b;
public function __construct()
{
$this->b = $this->a;
echo $this->b;
}
}
$this->a— это выражение, ссылающееся на активный объект. Вот почему его нельзя использовать в самом объявлении класса (на данный момент все статично), а только в методах (когда создается экземпляр объекта).