我正在使用Zend Framework 2中的Zend / Http为Jambase编写API。这是我的文件夹结构。
Jambase
|---composer.json
|---composer.phar
|---src
|----Jambase
|------|Service
|---------|Jambase.php
|---vendor
|-----|bin
|-----|composer
|-----|zendframework
|--------|zendframework
|-----------|library
|--------------|Zend
|----------------|Http
|--------------
|----vendor
所以基本上我的api sdk类在服务文件夹下的Jambase.php中。因为我有这样的标题, namespace Jambase \ Service;
use Zend\Authentication\Adapter\AdapterInterface,
Zend\Authentication\Result,
Zend\Http\Client,
Zend\Json\Json;
运行应用程序时出现错误,
Fatal error: Class 'Zend\Http\Client' not found in /usr/local/zend/apache2/htdocs/jambaseclient-php/src/Jambase/Service/Jambase.php
我知道这是命名空间或自动加载问题,有人可以帮忙吗? 它适用于绝对路径。不是相对路径。
答案 0 :(得分:0)
你有一个可以通过composer加载的结构,因为我在你的项目中看到了composer.json
文件。确实存在自动加载问题,您可以通过作曲家解决此问题。
重点是,php必须知道你有Zend\Http\Client
类可用,但你必须告诉php它在/usr/local/zend/apache2/htdocs/jambaseclient-php/vendor/zendframework/zendframework\library\Zend\Http\Client.php
下可用。
在vendor
目录中有一个名为autoload.php
的文件。在您的应用程序中,当您启动它时,必须加载此文件。然后你可以像现在一样加载所有Zend Framework 2代码。
为了进一步帮助您,请解释您在“运行应用程序时”的具体操作,以便明确使用是否以及如何解决自动加载问题。