我從來沒有在PHP中使用過命名空間,我無法導入某些使用它們的庫類。我試圖使用wsdl2php庫,這裏是如何使用該庫的示例代碼:PHP如何導入具有命名空間的類
$generator = new \Wsdl2PhpGenerator\Generator();
$generator->generate(
new \Wsdl2PhpGenerator\Config(array(
'inputFile' => 'input.wsdl',
'outputDir' => '/tmp/output'
))
);
但是,它不事關我放哪兒,執行該代碼我的PHP文件,它總是拋出類未發現錯誤,即使我包含include
或require
這兩個類,那麼庫類也會拋出class not found錯誤,因爲它要使用另一個庫類。
下面是一些供參考的目錄樹:在config.php
[src]
[Filter]
DefaultFilter.php
...
[Wsdl2PhpGenerator]
[Console]
Applicaton.php
...
...
Config.php
Generator.php
my_php_file_here.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;'這個''表示您的名字空間不在當前命名空間範圍內 – Timothy
'namespace Wsdl2PhpGenerator;'爲上游保留你正在使用的軟件包,你不應該使用它。在你的代碼中,使用你自己的命名空間,例如'namespace kajacx'。您將需要使用自動加載器或自己需要所需的文件。爲了讓生活更輕鬆,繼續看看作曲家:https://getcomposer.org/ – ymas
@Timothy是的,我已經嘗試在名稱空間之前添加'\\',但我仍然得到相同的錯誤。 @ymas我已經使用作曲家來首先獲取這些文件 – kajacx