Нет, потому что объект - это конструкция языка PHP, отличная от функции.Функции не имеют свойств, но вместо этого являются просто инструкциями по выполнению.
Но, если func
был вместо этого предопределенным классом, тогда да ... с небольшим колдовством, игнорируя общественные протесты, выше читаемостьи стандарты кодирования PHP, и с использованием замыканий с помощью магического метода __call()
...
class func
{
function __call($func, $args)
{
return call_user_func_array($this->$func, $args);
}
}
$obj = new func;
$obj->test = function($param1, $param2)
{
return $param1 + $param2;
};
echo $obj->test(1,1);
Это не будет работать, как вы думаетебез __call()
, потому что по $obj->test(1,1)
PHP думает, что вы пытаетесь вызвать несуществующий метод func
, находясь вне области видимости.Но внутри, поскольку новое свойство "test"
имеет тип: замыкание, call_user_func_array()
просто видит свойство "test"
просто как другую функцию, так что вы можете скрыть эту хитрость извнеОбъем.