Zend框架2命名空间歧义


Zend Framework 2 Namespace ambiguity

我正在使用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的service文件夹下。我的头部是这样的,名称空间Jambase '服务;

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

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

你有一个可以通过composer加载的结构,正如我在你的项目中看到的composer.json文件。这里确实有一个自动加载的问题,你可以通过composer来解决这个问题。

关键是,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代码了。

为了进一步帮助你,请解释一下你到底做了什么"当运行应用程序",以便清楚地使用它,以及你是如何解决自动加载的