나는 이것이 오래되었다는 것을 알고 있지만 PHP 5.4 이상을 사용하는 경우 Traits 가이 문제를 잘 처리한다고 생각합니다.
먼저 속성을 호출 가능하게 만드는 특성을 만듭니다.
trait CallableProperty {
public function __call($method, $args) {
if (property_exists($this, $method) && is_callable($this->$method)) {
return call_user_func_array($this->$method, $args);
}
}
}
그런 다음 클래스에서 해당 특성을 사용할 수 있습니다.
class CallableStdClass extends stdClass {
use CallableProperty;
}
이제 익명 함수를 통해 속성을 정의하고 직접 호출 할 수 있습니다.
$foo = new CallableStdClass();
$foo->add = function ($a, $b) { return $a + $b; };
$foo->add(2, 2); // 4