我公司的產品(&我也是)使用PHP 5.2。在PHP命名空間混淆中的類路徑相當於
我想切換到5.4,所以我第一次用5.4做了一些基本的測試。
按PSR 0,我跟着一個簡單的測試,以下文件夾結構:
Projectfolder
|
+ index.php
|
+ lib
|
+ vendor
|
+ mylib
|
+ MyClass.php (Having namespace \mylib)
這裏是我們的代碼,稱爲MyClass.php
:
namespace \mylib;
class MyClass {
public $testA;
public function MyClass(){
$this->testA = "test entry";
}
}
我的問題是如何讓一個實例index.php文件中的MyClass?
命名空間之前,我可以這樣做:
include "lib/vendor/mylib/MyClass.php";
$myClass = new MyClass();
echo $myClass->testA;
現在用的命名空間,我嘗試下面的代碼:
<?PHP
use mylib\MyClass
$myClass = new MyClass();
echo $myClass->testA;
不過,我得到以下錯誤:
Fatal error: Class 'mylib\MyClass' not found ...
我的問題是,我該如何讓PHP查看文件夾lib\vendor
中的命名空間文件。
在Java中,我們通常定義一個類路徑。 PHP中有類似的設置嗎?如命名空間教程中的一些示例所示,我需要包含包含要使用的所有類的所有PHP文件(10,20,50任意數字)。我想這不應該是這樣的,或者在PHP中引入命名空間的全部目的將被擊敗。
你有使用絕對路徑試過嗎? – fedorqui 2013-02-09 15:14:30
不是我想的。你能解釋一下嗎? – 2013-02-09 15:16:42
偶爾'include(「$ _ SERVER [DOCUMENT_ROOT] /lib/whatever.php」);'是一個好的選擇;使路徑絕對相對於webserver/vhost基目錄。或者考慮使用自動加載器,或者使用可怕的PSR-0摺疊,或者使用類路徑映射緩存。 – mario 2013-02-09 15:18:33