我公司的一个产品(我也是)使用的是PHP 5.2。
我想切换到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的实例?
在Namespace之前,我本可以这样做:
include "lib/vendor/mylib/MyClass.php";
$myClass = new MyClass();
echo $myClass->testA;
现在使用名称空间,我尝试以下代码:
<?PHP
use mylib'MyClass
$myClass = new MyClass();
echo $myClass->testA;
然而,我得到以下错误:
致命错误:找不到类"mylib''MyClass"。。。
我的问题是,如何告诉PHP查找文件夹lib'vendor
中的命名空间文件。
在Java中,我们通常定义一个类路径。PHP中有类似的设置吗?
正如命名空间教程中的一些示例所示,我需要包含所有PHP文件,这些文件包含要使用的所有类(10、20、50,任意数字)。我想这不应该是事实,否则在PHP中引入命名空间的整个目的就会失败。
即使使用名称空间,也必须包含这些文件。命名空间用于在包含这些类之后引用这些类。
这样你就可以
include "lib/vendor/mylib/MyClass.php";
use mylib;
'mylib'myClass::myFunction();
无new MyClass();
参见http://php.net/manual/en/language.namespaces.php详细示例