我公司的产品(也是我)也在使用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的实例?
在命名空间之前,我本可以这样做:
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中引入命名空间的整个目的都将被打败。
答案 0 :(得分:2)
即使是WITH命名空间,您也必须包含这些文件。 命名空间用于在包含它们之后引用这些类。
所以你可以
include "lib/vendor/mylib/MyClass.php";
use mylib;
\mylib\myClass::myFunction();
没有new MyClass();