- debug_backtrace: documentation ( source)
- print_r: documentation ( source)
- method_exists: documentation ( source)
<?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();
return (new $getCalled())->$name();
}
}
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);