gpt4 book ai didi

php - 使用引用变量 VS 用于自定义方法调用的公共(public)类变量

转载 作者:行者123 更新时间:2023-12-04 05:46:28 26 4
gpt4 key购买 nike

我遇到了一个奇怪的情况,也许你可以帮助我理解这一点。

$object = array('controller' => 'frontend_shop', 'method' => 'category');

include_once(PATH.'controllers/'.$object['controller'].'.php');

$controller = new $object['controller']($object);

class Frontend_shop extends Controller {

public $controller;

public function __construct($object)
{

// Works
$this->$object['method']();

//Don´t work
$this->controller = $object;
$this->controller['method']();

}

public function category()
{
echo 'hello';
}
}

这有效并显示“你好”
    $this->$object['method']();

但是当我将此数组分配给一个类变量时,例如:
    $this->controller = $object;
$this->controller['method']();

我得到:
Fatal error: Call to undefined function category() in /usr/lib/app/application/controllers/frontend_shop.php on line 10

当然我知道我可以使用第一种方法,但也许你可以解释一下类变量的方法有什么问题。谢谢

最佳答案

你需要类似的东西

$this->{$this->controller['method']}();
$this->controller['method']解析为字符串(方法名称)。但是必须在对象上调用方法(否则它们是函数,而不是方法),这就是另一个 $this->决议进来。

我更喜欢
$callable = array($this, $this->controller['method']);
call_user_func($callable);

我不喜欢乱七八糟的调用语法,因为你必须仔细查看代码才能看到真正发生了什么。

http://php.net/manual/en/function.call-user-func.php

http://www.php.net/manual/en/language.types.callable.php

关于php - 使用引用变量 VS 用于自定义方法调用的公共(public)类变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10624479/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com