2011-06-24 34 views
11

我已經做了使用命名空間的小網站。我把它放在我的電腦裏,我即將把它移到使用PHP 5.2的免費主機上。語法highlighter for php 5.2將它們解釋爲錯誤。php中的命名空間5.2

php 5.2支持名稱空間嗎?

如果不是有什麼辦法如何使用它們,只需對現有代碼進行很少的更改?

+0

不需要閱讀這個可愛的說明書:http://php.net/manual/en/language.namespaces.php –

+0

雖然不支持,但你當然可以刪除它們。最近剛剛出現:http:/ /stackoverflow.com/questions/1836387/strategy-for-developing-namespaced-and-non-namespaced-versions-of-same-php-code/3661724#3661724 - 不知道你是否問過這個問題,或者如果這確實是只是語法高亮? – mario

+1

PHP預處理sor聽起來不錯。但是我也使用了那些不用該腳本進行處理的變量類名。 – kravemir

回答

26

5.3之前不支持命名空間。不幸的是,沒有辦法讓他們適應5.2。

7

命名空間只可用於5.3

至少在類的情況下,可以使用class_exists功能檢查,如果一個類已經有類似規定全局名稱空間內的名稱。再加上__autoload()函數,可以創建一個通用別名,並讓系統檢查由原始名稱命名的兩個類以及帶有某種附加標識符的名稱。我將以「ns」爲例。

function __autoload($class){ 
    try{ 
    require_once('ns'.$class.'.php'); 
    }catch(Exception $e){ 
    echo 'The class is unavailable in pseudo-namespace as well as global'; 
    } 
} 

只要確保要求路徑指向您保留模型的任何位置。您可以使用其他文件夾而不是別名。

這樣,任何重複的類都可以放入獨立於主執行的文件中,只有它們不存在於全局中時才包括在內。雖然這並不能嚴格解決必須對類進行物理重命名的問題,但它允許您將定義放在不同的目錄中用於版本控制等目的。

0

我剛剛遇到此問題,我開發了一個圖像上傳腳本我自己和添加了一些第三方代碼來幫助圖像處理(裁剪),但他們使用名稱空間,在我的開發機器上工作正常,但是當我上傳到活動服務器時,我得到一個分析錯誤。

幸運的是我的主機支持PHP 5.3和5.4,所以香港專業教育學院要求他們將其更改爲5.3我而言,我希望能解決的具有1M的問題,簡單地移除命名空間做出的腳本失敗:(

保羅