(当不在对象上下文中时使用$ this)使用extend时

时间:2015-12-11 17:20:14

标签: php

问题是,即使该类正在扩展,php告诉我我没有在正确的上下文中使用任何解决方案或解释?

我的代码:

<?php

class MainController extends Controller
{
    public $name = 'main';

    public function index($name)
    {
        $this->set('name', $name);
        $this->renderPartial('main');
    }
}

错误是

  

致命错误:在第9行/home/wikizweb/www/wikizcms/admin/protected/controllers/MainController.php中不在对象上下文中时使用$ this

3 个答案:

答案 0 :(得分:2)

所以你的问题就是这个

  

不在对象上下文中时使用$ this

或者,换句话说,你不是先实例化这个类。你需要做这样的事情

$class = new MainController(); // class instance, with $this
$class->index('Name');

答案 1 :(得分:0)

控制器中的功能:

public function index($name)

假设您正在使用请求发送参数“name”。根据您使用的框架以及如何设置路由,名称可能是URL的一部分。请添加您要匹配的网址路径以及您获得的实际错误。

你的变量是公开的。尝试:

$this->name = $name;

看看是否能解决你的问题。

答案 2 :(得分:0)

我解决了这个问题,下一个说明或多或少地描述了问题:

  

请注意,调用call_user_func_array()进行重定向时   继承类之间的参数,你不应该使用$ this,   因为$ this总是引用已经实例化的类。   以下代码甚至似乎崩溃PHP(PHP不报告错误   但是过程只是终止),因为参数是   重定向只提升一级(到类foo_bar2):   http://php.net/manual/en/function.call-user-func-array.php

我正在使用该函数来调用我的应用程序的行为,但我不能使用$ this,它看起来像静态方法,我解决了这个问题实例化,并且为了解决这个问题,我在调用之前实例化了这个类函数call_user_func_array()

相关问题