之前我从未在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 found错误,因为它想要使用另一个库类。
以下是一些目录树供参考:
[src]
[Filter]
DefaultFilter.php
...
[Wsdl2PhpGenerator]
[Console]
Applicaton.php
...
...
Config.php
Generator.php
my_php_file_here.php
Config.php中的名称空间声明:namespace Wsdl2PhpGenerator;
如何在Config.php中使用use
: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();)
那么,如何使这项工作?
答案 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进行测试并且有效)