i有一个具有$action
变量的类,该类别以其值为值。通常,在初始化此值时,我可以做这样的事情:
$this->action = function() {
echo "My function";
}
然后,我会通过这样的操作来调用该功能:
$this->action();
课程本身看起来像这样:
<?php
/**
* Resolves an non-callable action
*/
class ActionResolver
{
private $action;
/**
* Action constructor.
*
* @param string $action
*/
public function __construct($action)
{
$this->action = $action;
}
public function resolve()
{
$actionResolver = new ActionResolver();
$results = ...
$this->action = $actionResolver->resolveCallable($results);
}
/**
* @return callable
*/
public function getAction()
{
return $this->action;
}
}
在resolveCallable()
函数中,应由$results
变量的结果通过另一个对象的方法解决该操作。此方法在ActionResolver
类中。该方法看起来像这样:
public function resolveCallable(array $results)
{
$class = $results[0];
$method = null;
if (isset($results[1])) {
$method = ...
}
$object = new $class;
if (!is_null($method)) {
return $class->$method();
}
return function() {};
}
通过从$results
变量获取的字符串来解决方法和类获取。类和方法名称既有效又有效。
当我尝试调用此问题时,它会从方法返回返回值,而不是方法本身。
如何返回方法本身而不是未调用方法的内容?
只返回值。
而不是
return $class->$method();
使用
return $class->$method;