2013-03-22 47 views
-3

我在一個名爲website的類中有兩個函數。這兩個函數是checkStatus和killPage。在PHP的另一個函數中使用函數

功能killPage是關於使用一個很好的簡單化的樣式,而不是一個完整的單詞文本hult。 函數checkStatus應該在代碼中使用killPage,但它不會讓我使用它。

繼承人的代碼:

class website 
{ 
    function killPage($content) 
    { 
     die(" 

      <h1>" . Settings::WEBSITE_NAME ." encountered an error</h1> 

      " . $content . " 

      "); 
    } 

    function checkStatus(){ 
     if(Settings::STATUS == 'M') 
     { 

      $website->killPage('We are in maintence'); 
     } 
     if(Settings::STATUS == 'O') 
     { 
     } 
     if(Settings::STATUS == 'C') 
     { 
      $website->killPage('We are closed'); 
     } 
    } 
} 

$website = new Website; 

的錯誤,我得到:

未定義的變量:網站& & 調用一個成員函數killPage()一 非對象

+0

我強烈建議閱讀更多關於面向對象和PHP。您在課堂上使用'$ this' ..'$ this-> killPage()' – UnholyRanger 2013-03-22 20:27:58

回答

2

$this是指一類的當前實例,而不是$classname

+0

謝謝,我在前面的問題中被告知過這個問題,但它在一週前還是被遺忘了。 – Lewes 2013-03-22 20:34:19

0

問題是這裏:

function checkStatus(){ 
    if(Settings::STATUS == 'M') 
    { 
     Settings::STATUS == 'M'; 
     $website->killPage('We are in maintence'); 
    } 

您正在取消引用$website尚未納入範圍。

在這種情況下,$website是一個全局變量,你需要把它納入範圍:

function checkStatus() { 
    global $website; 

    if(Settings::STATUS == 'M') 

編輯或有人指出,作爲checkStatus是一個成員函數,你應該使用$this

1

變化$website$this

class website 
{ 
    function killPage($content) 
    { 
     die(" 

      <h1>" . Settings::WEBSITE_NAME ." encountered an error</h1> 

      " . $content . " 

      "); 
    } 

    function checkStatus(){ 
     if(Settings::STATUS == 'M') 
     { 

      $this->killPage('We are in maintence'); 
     } 
     if(Settings::STATUS == 'O') 
     { 
     } 
     if(Settings::STATUS == 'C') 
     { 
      $this->killPage('We are closed'); 
     } 
    } 
} 
相關問題