Zend Framework 2命名空间模糊

时间:2013-06-14 07:45:49

标签: php namespaces zend-framework2 autoload

我正在使用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

我知道这是命名空间或自动加载问题,有人可以帮忙吗? 它适用于绝对路径。不是相对路径。

1 个答案:

答案 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代码。

为了进一步帮助您,请解释您在“运行应用程序时”的具体操作,以便明确使用是否以及如何解决自动加载问题。