2011-11-06 46 views
1

未定義的常量問題不是一個新問題,我已經嘗試過Google,並且發現了一百萬個涉及缺少引號的數組的答案,這不是我的解決方案。我正在學習使用PHP進行OOP編碼,這實際上是我使用PHP開始的幾個小時。這是我創建的班級。使用未定義的常量 - 學習OOP PHP

class template { 

var $page; 

function __construct() { 
    $this->page = 'home'; 
} 

function getHeader($header = 'header') { 
    include ('template/'.$header.'.php'); 
} 

function getFooter($footer = 'footer') { 
    include ('template/'.$footer.'.php'); 
} 

function setPage($page = 'home') { 
    $this->page = $page; 
} 

function getPage() { 
    if(page === 'home') { 
     include('template/home.php'); 
    } else { 
     include('template/'.$this->page.'.php'); 
    } 
} 



} 

這就是我如何實例化它。

include('class.template.php'); 

$template = new template(); 

$template->getHeader(); 

if(isset($_GET['page'])) { 
    $template->setPage($_GET['page']); 
} 

$template->getPage(); 



$template->getFooter(); 

當然的錯誤 - 注意:使用未定義的常量頁的 - 假設「頁」在/Applications/MAMP/htdocs/titan-up/class.template.php在線24

這很顯然,我應該馬上發現我做錯了,但已經很晚了,而且我很茫然。任何幫助是極大的讚賞。

編輯:任何使學習過程更輕鬆的鏈接將不勝感激。我已經閱讀了PHP手冊,並且在PHP中有強大的背景,但不是OOP。從這個

+0

參見http://stackoverflow.com/questions/2941169/what-does-the-php-error-message-notice-use-of-undefined-constant-mean –

回答

8

變化:

function getPage() { 
    if(page === 'home') { 

要這樣:

function getPage() { 
    if($this->page === 'home') { 

錯誤消息「請注意:使用未定義的常量頁的 - 假設‘頁’」是不是非常有幫助的,但它是由於不幸的事實PHP將隱式地將未知令牌轉換爲具有相同值的常量。

這就是看到page(它沒有在它前面的$,因此不是變量名)並將其視爲好像前面的語句define('page', 'page');一樣。

注:此錯誤消息的另一個常見原因是,如果你忘了引號包裹字符串 - 如$some_array[some_key]代替$some_array['some_key']

+0

就是這樣。我正在使用的教程沒有以這種方式使用它,但基於我有限的知識,這確實是有意義的。謝謝您的幫助。 – RedElement

+0

啊,這個錯誤本身現在確實完全有意義。我認爲這是我定義價值的方式出了問題。 – RedElement