0

我公司的一个产品(我也是)使用的是 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 中引入命名空间的整个目的都会失败。

4

1 回答 1

2

即使 WITH 命名空间,您也必须包含文件。命名空间用于在包含这些类之后引用它们。

这样你就可以

include "lib/vendor/mylib/MyClass.php";
use mylib;
\mylib\myClass::myFunction();

没有new MyClass();

有关详细示例,请参见http://php.net/manual/en/language.namespaces.php

于 2013-02-09T15:26:17.303 回答