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/');
    }

偽の値を入力しても、致命的なエラーは同じままです。そのため、インターフェースのロードはDispatchableInterfaceinclude_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のクラスですか?私はそれがあなたのいくつかのクラスだと思います。そして、間違った名前空間のインターフェースを追加しています。IMOそれはあるべきです\Zend\Stdlib\DispatchableInterface

于 2012-09-16T19:29:07.837 に答える