PHP:使用类名作为变量名


PHP: using class name as variable name

我有一个函数作为:

public function controller_instance($controller_name)
{
      $controller = Router::getRequestedController();
      return $controller instanceof $controller_name;
}

并且我将该函数称为CCD_ 1。

这总是返回false,因为变量$controller_name包含字符串IndexController

我怎样才能做到这一点?

只需从控制器字符串中创建新类

return $controller instanceof (new $controller_name());

您需要一个实例还是布尔值?

在包含方法controller_instance的同一类中创建一个数组属性,并存储所有实例

private $controllers = array();
public function controller_instance($controller_name)
{
    if (isset($this->controllers[$controller_name])) {
        return $this->controllers[$controller_name];
    }
    return $this->controllers[$controller_name] = new $controller_name();
}

示例2:使用ReflectionClass和参数

private $controllers = array();
public function controller_instance($controller_name, Array $args = array())
{
    if (isset($this->controllers[$controller_name])) {
        return $this->controllers[$controller_name];
    }
    $class = new ReflectionClass($controller_name);
    $instance = $class->newInstanceArgs($args);
    return $this->controllers[$controller_name] = $instance;
}