var obj = {
'a' : function(){ return 1; },
'b' : {
'ba' : function(){ return 2; },
'bb' : {
'bba' : function(){ return 3; }
}
}
}
obj.a();
obj.b.ba();
obj.b.bb.bba();
$obj = (object) [
'a' => function(){ return 1; },
'b' => (object) [
'ba' => function(){ return 2; },
'bb' => (object) [
'bba' => function(){ return 3; }
]
]
];
call_user_func($obj->a);
call_user_func($obj->b->ba);
call_user_func($obj->b->bb->bba);
$obj->a->__invoke();
$obj->b->ba->__invoke();
$obj->b->bb->bba->__invoke();
$obj = [
'a' => function(){ return 1; },
'b' => [
'ba' => function(){ return 2; },
'bb' => [
'bba' => function(){ return 3; }
]
]
];
$obj['a']();
$obj['b']['ba']();
$obj['b']['bb']['bba']();