【发布时间】:2016-11-08 05:32:03
【问题描述】:
我以前从未在 PHP 中使用过命名空间,并且我无法导入一些使用它们的库类。我正在尝试使用wsdl2php 库,这是有关如何使用该库的示例代码:
$generator = new \Wsdl2PhpGenerator\Generator();
$generator->generate(
new \Wsdl2PhpGenerator\Config(array(
'inputFile' => 'input.wsdl',
'outputDir' => '/tmp/output'
))
);
但是,我将执行此代码的 php 文件放在哪里并不重要,它总是会抛出 class not found 错误,即使我包含 include 或 require 的两个类,那么库类将抛出 class not发现错误,因为它想使用另一个库类。
这里有一些目录树供参考:
[src]
[Filter]
DefaultFilter.php
...
[Wsdl2PhpGenerator]
[Console]
Applicaton.php
...
...
Config.php
Generator.php
my_php_file_here.php
Config.php 中的命名空间声明:namespace Wsdl2PhpGenerator; use 在 Config.php 中如何使用:use Wsdl2PhpGenerator\ConfigInterface;
据我所知,我在 php 文件的开头添加了以下内容:
namespace Wsdl2PhpGenerator;
use Wsdl2PhpGenerator\Generator;
use Wsdl2PhpGenerator\Config;
没有成功,我还是得到了
Fatal error: Class 'Wsdl2PhpGenerator\Generator' not found in C:\kajacx\programming\PHP\EET\test\wsdl2phpgenerator-master\src\kappa.php on line 8 ($generator = new \Wsdl2PhpGenerator\Generator();)
那么,如何做到这一点呢?
【问题讨论】:
-
您忘记在命名空间前添加一个起始
\:use \Wsdl2PhpGenerator\Generator;这\表示您的命名空间超出了当前命名空间范围 -
namespace Wsdl2PhpGenerator;是为你正在使用的上游包保留的,你不应该使用它。在您的代码中,使用您自己的命名空间,例如namespace kajacx。您要么需要使用自动加载器,要么自己需要所需的文件。为了让生活更轻松,请继续查看作曲家:getcomposer.org -
@Timothy 是的,我尝试在命名空间之前添加 `\`,但仍然出现相同的错误。 @ymas 我首先使用 composer 来获取这些文件
标签: php namespaces include