Как узнать имя подкласса? Здравствуйте. Скажите как можно свойству $now класса Chief присваивать строку - имя подкласса (А или В или С) в которых в данный момент вызывается неопределенное свойство. То есть как класс Chief может знать имена своих подклассов в которых вызывается неопределенное свойство.error_reporting(E_ALL);
class Chief
{
public $now;
public function __get($name){
return $name;
}
}
class A extends Chief
{
public function perf(){
return $this->pr_a;
}
}
class B extends Chief
{
public function perf(){
return $this->pr_b;
}
}
class C extends Chief
{
public function perf(){
return $this->pr_c;
}
}
class Closing extends Chief
{
public $all = array('A','B','C');
public function perf(){
foreach($this->all as $v){
$aught = new $v;
echo $aught->perf().'';
}
}
}
$res = new Closing();
print $res->perf();

21 Авг 2019 в 07:04
186 +1
0
Ответы
1

Вы можете получить имя текущего класса, в котором вызывается неопределенное свойство, используя метод get_called_class(). Вот как вы можете изменить ваш код, чтобы свойству $now класса Chief присваивалось имя подкласса (A, B или C):

error_reporting(E_ALL);
class Chief
{
public $now;
public function __get($name){
$this->now = get_called_class();
return $name;
}
}
class A extends Chief
{
public function perf(){
return $this->pr_a;
}
}
class B extends Chief
{
public function perf(){
return $this->pr_b;
}
}
class C extends Chief
{
public function perf(){
return $this->pr_c;
}
}
class Closing extends Chief
{
public $all = array('A','B','C');
public function perf(){
foreach($this->all as $v){
$aught = new $v;
$this->now = get_called_class();
echo $aught->perf().'<br>';
}
}
}
$res = new Closing();
print $res->perf();

Теперь при вызове неопределенного свойства в подклассах A, B или C, свойству $now класса Chief будет присвоено имя подкласса, в котором это свойство было вызвано.

20 Апр 2024 в 13:08
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир