2015-12-11 76 views
-1

問題是,即使類正在擴展PHP告訴我,我沒有在正確的上下文中使用任何解決方案或解釋?

我的代碼:

<?php 

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

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

的錯誤是

Fatal error: Using $this when not in object context in /home/wikizweb/www/wikizcms/admin/protected/controllers/MainController.php on line 9

+0

你可以顯示你的代碼運行會拋出錯誤? – wogsland

+1

我看到這個類,但是它的實例化或用法都沒有。 – Flosculus

+0

有一個自動加載這些類,一個路由器類通過用戶請求調用所有這些類 –

回答

0

在你的控制器功能:

public function index($name) 

假定您與請求發送參數 '名' 。根據您使用的框架以及設置路由的方式,名稱可能是url的一部分。請添加您嘗試匹配的網址路線以及您收到的實際錯誤。

而你的變量是公開的。嘗試:

$this->name = $name; 

然後看看是否可以解決您的問題。

+0

對不起,但麻煩似乎是控制器類的實例化,因爲當我使用一個變量實例化它工作正常,但是當通過擴展使用發生這個錯誤。 –

2

所以你的問題是這樣的

Using $this when not in object context

或者,換一種說法,你不實例化類第一。你需要做這樣的事情

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

不知道爲什麼這是投下來的時候,它是正確的答案 – Edward

0

我解決了這個問題,接下來的說明描述或多或少是什麼問題:

Please note, that when calling call_user_func_array() to redirect parameters between inherited classes, you should not use $this, because $this always refers to the class which has been instantiated. The following code even seems to crash PHP (PHP does not report error but the process simply terminates), because the the parameters are redirected only one level up (to class foo_bar2): http://php.net/manual/en/function.call-user-func-array.php

我使用的函數調用的行爲我的應用程序,但我不能使用$這個,它看起來像靜態方法,並且我解決了這個問題的實例化,並且爲了解決這個問題,我在實例化類之前調用​​函數call_user_func_array()

相關問題