0

CodeIgniter に zend_framework をインストールし、「Zend/Soap/AutoDiscover」をロードします。ここで、autoDiscover に関数を追加し、そのために WSDL を生成したいと考えています。これは私がやったことです:

class Api extends CI_Controller {

public function update_profile() {


    $this->load->library('zend');
    $this->zend->load('Zend/Soap/AutoDiscover');

    $autodiscover = new Zend_Soap_AutoDiscover();
    $autodiscover->addFunction( 'hello' );
    $autodiscover->handle();
}

public function hello() {
    return "Hello world";
}

}

このエラーを解決するにはどうすればよいですか?

4

1 に答える 1

0

これは、 がメソッドZend_Soap_AutoDiscover内のメソッド名ではなく、単純なグローバル関数を想定しているためaddFunctionです。スタックトレースを調べてみると、追加したパラメーターがこれに対してチェックされることがわかります (例外をスローする直前)。

if (!is_string($function) || !function_exists($function)) {
    // exception is thrown here
}

代わりに使用できるのはsetClassメソッドです。これにより、クラスのすべてのパブリック メソッドを公開できます。このため、実際の作業を行うコンストラクター以外の別のクラスを定義し、コントローラーがある場合はそこからサービス クラスに委任する方が実行可能であることがわかる場合があります。

于 2012-08-13T18:50:14.027 に答える