簡體   English   中英

PHP:使用類名作為變量名

[英]PHP: using class name as variable name

我有一個功能為:

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

}

我將函數稱為controller_instance('IndexController')

這總是返回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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM