PHP如何使用命名空间导入类

时间:2016-07-06 08:22:23

标签: php namespaces include

之前我从未在PHP中使用过命名空间,我无法导入一些使用它们的库类。我尝试使用wsdl2php库,以下是有关如何使用该库的示例代码:

$generator = new \Wsdl2PhpGenerator\Generator();
$generator->generate(
  new \Wsdl2PhpGenerator\Config(array(
    'inputFile' => 'input.wsdl',
    'outputDir' => '/tmp/output'
  ))
);

然而,无论我把执行此代码的php文件放在哪里,它总是抛出class not found错误,即使我包含includerequire的类,然后是库类将抛出class not found错误,因为它想要使用另一个库类。

以下是一些目录树供参考:

[src]
    [Filter]
        DefaultFilter.php
        ...
    [Wsdl2PhpGenerator]
        [Console]
            Applicaton.php
            ...
    ...
    Config.php
    Generator.php
    my_php_file_here.php
Config.php中的

名称空间声明:namespace Wsdl2PhpGenerator;如何在Config.php中使用useuse 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();)

那么,如何使这项工作?

2 个答案:

答案 0 :(得分:1)

就像我刚刚使用wsdl2php lib(从github克隆)并遇到同样的问题,这就是我为解决它而采取的措施:

1)不要忘记在所有人之前启动composer install ...

2)在php文件的顶部添加require_once dirname( dirname(__FILE__) ) . '/vendor/autoload.php';

答案 1 :(得分:0)

只需使用:

require_once __DIR__ . '/vendor/autoload.php';

并且composer将为您解析导入。 (使用相同的lib进行测试并且有效)