2014-02-17 83 views
0

我已經被$this很長時間了。很多時候,當我嘗試閱讀一些Joomla片段時,我在這裏和那裏遇到了$this。 我明白一類的定義,$this是指類的實例。但是當$this不在定義中意味着什麼? 像這樣:

echo $this->loadTemplate('item') 

這:

<?php if ($this->params->get('teacher_studylist', '1') == '1') 
{ if ($this->message->teachername) {?> 
<div class="teacher"><?php echo JText::_('COM_PREACHIT_by');?> <span><?php echo $this->message->teachername;?></span></div> 
<?php } ?> 
<?php } ?> 

我的第二個問題是,在Javascript,如果我很困惑什麼「本」是的,我可以經常去的browers'控制檯和懸停我的鼠標在「this」上,它所指的將會出現。但在PHP中,有什麼辦法可以做類似的事情嗎?(如果我已經知道這樣做的方式,我可以通過自己解決問題而不必在這裏尋求幫助)

+1

'var_dump($ this)'。 – meagar

+0

'$ this'可能指的是一個Joomla超全局,可用於調用各種加載的類和對象項,如'params'或'message' – MonkeyZeus

回答

2

嘗試:

get_class($this); 

要找出你的$this

2

始發自the docs

注意$這個對象在模板總是JDocument對象的當前實例。還要注意$ this-> params是JParameter類型的對象。

+0

非常感謝。我試圖在文檔中搜索$ this,但結果太多以至於找不到我的答案。你能告訴我你是如何進入該頁面的嗎? 但是,我仍然有一個問題。在我的主要問題中,這些「$ this」不在模板中,「get_class」的結果不是Jdocument。那麼,如何告訴$這是「在模板中」呢? – shenkwen

+0

我搜索了「joomla模板$ this」,我只是認爲它是一個模板,因爲HTML;那些文檔實際上看起來過時了,我認爲模板類現在被稱爲'JDocumentHTML'。我對joomla並不太熟悉,所以我只是猜測,但實際上你可以使用'get_class()'_tell_來確定你在模板中的類型是什麼類型的對象的作用域(如果它是'例如JDocumentHTML') – Clive