2009-10-29 114 views
7

如果出現錯誤,這裏是部分。

Fatal error: Using $this when not in object context in /pb_events.php on line 6

線6:$jpp = $this->vars->data["jpp"];

function DoEvents($this) { 

    global $_CONF, $_PAGE, $_TSM , $base; 

    $jpp = $this->vars->data["jpp"]; 

    $cache["departments"] = $this->db->QFetchRowArray("SELECT * FROM {$this->tables[job_departments]}"); 
    $cache["locations"] = $this->db->QFetchRowArray("SELECT * FROM {$this->tables[job_location]}"); 
    $cache["names"] = $this->db->QFetchRowArray("SELECT * FROM {$this->tables[job_names]}"); 
    $cache["categories"] = $this->db->QFetchRowArray("SELECT * FROM {$this->tables[job_categories]}"); 

非常感謝!欣賞!

回答

13

$時纔有意義的方法,而不是在功能

這是確定

class Foo { 
    function bar() { 
      $this->... 

這不是

function some() { 
    $this-> 

//編輯:沒有注意到他通過「 $ this「作爲參數

建議:只需將」$ this「替換爲」$ somethingElse「

+0

感謝您的回覆!這是一個在PHP4上運行良好的開源軟件代碼。現在我嘗試在PHP5上,並有錯誤:/我不擅長在PHP:/根據您的建議,試圖解決這個問題... – 2009-10-29 14:06:49

+0

所以我怎麼編輯? :/如果我在上面放一個班,其他頁面不工作...大混亂 – 2009-10-29 14:15:09

+0

哇!我愛你@@@@!!!!生命保護!!!!感謝一位很多人! :))woaaaa太開心了! – 2009-10-29 14:40:09

6

您無法將$this傳遞給程序功能。 $this是一個保留變量。

+0

嘿,謝謝!那麼你有什麼解決方案的建議?你能更清楚一點嗎?我不是很擅長php:/ – 2009-10-29 14:16:03

+3

只是改變傳遞的變量的名稱。檢查我的答案。 – 2009-10-29 14:30:22

+0

一個偉大的陷阱! – 2009-10-29 14:48:02

0

您必須首先創建對象。

$object=new Myobject; 
    DoEvents($object); 
4

根據我的意見。 你想使用$this作爲傳遞變量,php不允許它在類方法體外。

function DoEvents($obj) { 

    global $_CONF, $_PAGE, $_TSM , $base; 

    $jpp = $obj->vars->data["jpp"]; 

    $cache["departments"] = $obj->db->QFetchRowArray("SELECT * FROM {$obj->tables[job_departments]}"); 
    $cache["locations"] = $obj->db->QFetchRowArray("SELECT * FROM {$obj->tables[job_location]}"); 
    $cache["names"] = $obj->db->QFetchRowArray("SELECT * FROM {$obj->tables[job_names]}"); 
    $cache["categories"] = $obj->db->QFetchRowArray("SELECT * FROM {$obj->tables[job_categories]}"); 
+0

是的!這是問題!我多麼愚蠢!排序之前,你的評論...你的人生救星!非常感謝!!!超級你們! – 2009-10-29 14:42:56

相關問題