2012-06-28 20 views
-2

我收到錯誤(下面的代碼中提到),當我打開我的代碼到另一個系統,在PHP中使用未定義的常量erorr的

配置:

操作系統:Windows 7 PHP服務器:XAMPP

請幫我解決這個問題。提前致謝。

CODE:

<?php 
class settings{ 
    public $theme; 
    public $db_pf; 

    function __construct(){ 
     $this->theme="default"; 
     $this->db_pf="task_"; 
     $this->paths(); 
     $this->abbr(); 
     $this->errors(); 

     $this->enable_db_config(); 
    } 
    function paths(){ 
     define(ROOT,$_SERVER['DOCUMENT_ROOT']); 
     define(BP,"/task/"); 
     define(ABSPATH,"/task/ta-admin/"); 
     define(ADMPATH,"/task/administrator/"); 
     define(INCLUDE_PATH,ABSPATH."includes/"); 
     define(MODULE_PATH,ABSPATH."modules/"); 
     define(CONTENT_PATH,ABSPATH."contents/"); 
     define(THEME_PATH,ABSPATH."templates/".$this->theme."/"); 
     define(STYLE_PATH,THEME_PATH."styles/"); 
     define(IMAGE_PATH,THEME_PATH."images/"); 
     define(JS_PATH,BP."assets/js/"); 
     define(JQ_PATH,BP."assets/jq/"); 
    } 
    function enable_db_config(){ 
     include(ROOT.BP."ta-includes/class-db-config.php"); 
    } 
    function abbr(){ 
     define(task_title,"Admin-Quit Tasker-"); 
     define(LOGIN_TITLE," Administrator Login..."); 
     define(SLOGAN,"Enabling Solutions to your Tasks..."); 
    } 
    function errors(){ 
     define(NOTFOUND,"Page not found"); 
     define(GOBACK," please press ok to go back...");  
    } 
} 
$obj_settings=new settings(); 
?> 

錯誤:

Notice: Use of undefined constant ROOT - assumed 'ROOT' in C:\xampp\htdocs\task\ta-includes\class-settings.php on line 14 

Notice: Use of undefined constant BP - assumed 'BP' in C:\xampp\htdocs\task\ta-includes\class-settings.php on line 15 

Notice: Use of undefined constant ABSPATH - assumed 'ABSPATH' in C:\xampp\htdocs\task\ta-includes\class-settings.php on line 16 

Notice: Use of undefined constant INCLUDE_PATH - assumed 'INCLUDE_PATH' in C:\xampp\htdocs\task\ta-includes\class-settings.php on line 17 

Notice: Use of undefined constant CONTENT_PATH - assumed 'CONTENT_PATH' in C:\xampp\htdocs\task\ta-includes\class-settings.php on line 18 

Notice: Use of undefined constant THEME_PATH - assumed 'THEME_PATH' in C:\xampp\htdocs\task\ta-includes\class-settings.php on line 19 

Notice: Use of undefined constant STYLE_PATH - assumed 'STYLE_PATH' in C:\xampp\htdocs\task\ta-includes\class-settings.php on line 20 

Notice: Use of undefined constant JS_PATH - assumed 'JS_PATH' in C:\xampp\htdocs\task\ta-includes\class-settings.php on line 21 

Notice: Use of undefined constant JQ_PATH - assumed 'JQ_PATH' in C:\xampp\htdocs\task\ta-includes\class-settings.php on line 22 
+0

哪一部分的錯誤信息在特定的程序中你不明白? – hakre

回答

6

你常數必須是字符串。所以,你必須用引號引起來「包裝」他們是這樣的:

define('ROOT',$_SERVER['DOCUMENT_ROOT']); 
    ^^

有疑問時,經常檢查Manual,在這種情況下define()

地址:
的功能還定義常量是,我發現,有點「躲閃」。如果你堅持不移動它們到另一個(例如config)文件中,那麼這個文件在開始的時候就被加載了,然後至少把它們從類構造中拿出來。

+0

謝謝,這工作正常。但在我的另一個系統中,我從來沒有用過引號,但它們運行良好,你能告訴我應該在php.ini文件中更改配置嗎? – Kmanikandan

+0

對不起,我不能告訴你爲什麼,因爲我不知道你的「其他系統」是。看看['define()'](http://php.net/manual/en/function.define.php)的例子,看看它應該如何完成。 – Havelock

+2

@Kmanikandan:如果你修理了一些東西,請將它修理在正確的地方。這次它是你的代碼,而不是PHP ini設置。由於這兩個系統不同,您需要了解ini設置有所不同的教訓,您應該充分利用這一點:啓用**開發系統上的錯誤報告/登錄到最高級別以改進您的代碼。 – hakre

0

我認爲你誤解了Define &的常量是否是這樣做的,在Object中定義一個常量沒有意義。

也許這是你在做什麼更好的方法:

http://php.net/manual/en/language.oop5.constants.php

另外,設置使用定義項的最常見的用法是withing一個si9mple設置或配置文件...