【发布时间】:2013-01-25 05:11:35
【问题描述】:
我公司的一个产品(我也是)使用的是 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 中引入命名空间的整个目的都会失败。
【问题讨论】:
-
你试过绝对路径吗?
-
我猜不是。你能解释一下吗?
-
偶尔
include("$_SERVER[DOCUMENT_ROOT]/lib/whatever.php");是一个不错的选择;相对于 webserver/vhost 基本目录,使路径成为绝对路径。或者考虑一个自动加载器,或者带有糟糕的 PSR-0 折叠,或者带有类路径映射缓存。
标签: php namespaces