2010-08-07 13 views
1

我得到「致命錯誤:調用未定義的函數getSContent()」與包含的代碼,但是......你可以看到:我的功能就在那裏!爲什麼我會收到「缺少功能」錯誤?我的功能就在那裏!

請幫忙。我相信我需要一些睡眠。

class InfoController extends AppController { 

    var $name = 'Info'; 
    var $helpers = array('Html', 'Session'); 
    var $uses = array(); 

    function display() { 
     $path = func_get_args(); 

     $section = $path[0]; 
     $mainMenuActiveElement = $section; 
     $sectionContent = getSContent($section); 

     $this->set(compact('section', 'mainMenuActiveElement', 'sectionContent')); 
     $this->render('/pages/info'); 
    } 

    function getSContent($section) { 
     $sectionContent = ''; 
     switch ($section) { 
      case 'bases': 
       $sectionContent = 'some content'; 
       break; 
      case 'informacion': 
       $sectionContent = 'some other content'; 
       break; 
     } 
     return $sectionContent; 
    } 

} 

回答

7

您必須指定上下文。 PHP不像例如隱含地,C++不會假設this

$sectionContent = $this->getSContent($section); 
+0

哦!我真的需要去睡覺。謝謝@VolkerK! – vmarquez 2010-08-07 21:18:38

+0

我真的很抱歉,「不會假設......隱含」部分;-)請參閱http://en.wikipedia.org/wiki/Name_resolution – VolkerK 2010-08-07 21:22:34

+0

它在PHP中沒有任何意義。參見http://stackoverflow.com/questions/3345408/what-is-the-point-of-having-this-and-self-in-php/3376490#3376490 – Artefacto 2010-08-07 21:28:08

2

您的功能特別是一種方法。方法名稱不在PHP的函數表中,它們與特定的類相關聯。

你應該叫它們與符號$object->methodName(),其中$object可以$this當一個方法中,以調用同一個實例的實例方法作爲當前一個。

當方法聲明爲靜態時,符號變成ClassName::methodName()。在特殊情況下,實例方法調用也會使用此語法來調用。

相關問題