问题是,即使该类正在扩展,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
答案 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()