<?php
class foo
{
private $data;
private $relations;
public function __set($name, $value)
{
$this->data[$name] = $value;
}
public function __get($name)
{
if(isset($this->data[$name])){
return $this->data[$name];
}
if(method_exists('bar',$name)){
$getCalled = get_called_class();
(new $getCalled())->$name();
return $this;
}
}
public function __construct()
{
$this->data = ['foo' => 'test', 'body' => 'content'];
}
public function test()
{
$function = debug_backtrace()[1]['function'];
echo $function;
$this->relations[$function] = ['a' =>'aa', 'b' =>'bb'];
return $this;
}
}
class bar extends foo{
public function aa(){
return $this->test();
}
}
$bar = new bar();
$bar->aa;
print_r($bar);
- Output for 7.0.0 - 7.0.31, 7.1.0 - 7.1.33, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.27, 8.2.0 - 8.2.17, 8.3.0 - 8.3.4
- aabar Object
(
[data:foo:private] => Array
(
[foo] => test
[body] => content
)
[relations:foo:private] =>
)
preferences:
175.1 ms | 403 KiB | 237 Q