4

简洁版本

Client 类在哪里寻找DispatchableInterface接口?

class Client implements Libraries\Stdlib\DispatchableInterface

我正在尝试将 ZF2 库添加到 CodeIgniter 安装中。整个 Zend 文件夹位于:

 /Users/stef/Sites/site_name/application/libraries/

在我的 CI 控制器中,我有

public function run()
{
    $CI =& get_instance();
    $CI->load->library('Zend');
    $CI->load->library('Zend/Http/Client');
    $client = new Client($url);

    //Do stuff
}

当我访问 run() 方法时,我收到一个致命错误:

致命错误:'Zend\Stdlib\DispatchableInterface'在第 27 行的 /Users/stef/Sites/site_name/application/libraries/Zend/Http/Client.php 中找不到接口

在libraries/Zend.php(我添加的一个文件,不是ZF的一部分)我有

function __construct($class = NULL)
{
    // include path for Zend Framework
    // alter it accordingly if you have put the 'Zend' folder elsewhere
    ini_set('include_path',ini_get('include_path') . PATH_SEPARATOR . APPPATH . 'libraries/Zend/');
    }

我将 include_path 设置为什么似乎并不重要,即使我输入了虚假值,致命错误也保持不变。所以看起来界面的加载DispatchableInterface并没有使用include_path。

我怎样才能让 Client.php “找到”接口,它在这里尝试这样做:

class Client implements Libraries\Stdlib\DispatchableInterface
4

1 回答 1

3

最简单的解决方案可能是:

set_include_path(get_include_path() . PATH_SEPARATOR . '/Users/stef/Sites/site_name/application/libraries/');
require_once 'Zend/Loader/StandardAutoloader.php';
$loader = new Zend\Loader\StandardAutoloader(array('autoregister_zf' => true));
$loader->register();

然后跳过该CI->load部分。只需使用new Zend\Http\Client. 还要确保可调度接口在/Users/stef/Sites/site_name/application/libraries/Zend/Stdlib/DispatchableInterface.php

更新: 我刚刚注意到:

class Client implements Libraries\Stdlib\DispatchableInterface

这是什么课?是 Zend 的课吗?我猜这是你的某个班级。而且您正在添加错误命名空间的接口。海事组织应该是\Zend\Stdlib\DispatchableInterface

于 2012-09-16T19:29:07.837 回答