2012-08-12 90 views
0

我在我的CodeIgniter上安装了zend_framework并加载了“Zend/Soap/AutoDiscover”。 现在我想将函数添加到autoDiscover并为其生成WSDL。这是我做了什么:在codeIgniter中使用zend_soap_autoDiscover

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"; 
} 

}

我应该怎么做才能解决这个问题?

回答

0

这是因为Zend_Soap_AutoDiscover需要简单的全局函数,而不是addFunction方法中的方法名称。如果你周围的堆栈跟踪捅你本身会在您添加的参数将被反对这种倒行(只是抛出异常前)检查:

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

什么,你可以转而使用的是setClass方法。有了这个,你可以暴露每个类的公共方法。为此,您可能会发现定义一个不同于其他类的构造函数是更为可行的,该构造函数完成真正的工作,并且如果您有控制器,那么只需从那里委托给服务类。