I wrote a soap client a while ago using Zend Framework 1 that was consuming data, and needed to log each request for debugging purposes. Thought I’d share a couple of things that I learned.
class My_Test_Soap_Client extends Zend_Soap_Client ... public function _doRequest() { $argList = func_get_args(); $options = $this->_getOptions(); if ($options['testsoapclient'] == true) { $soapLogger = new Zend_Log(); $writer = new Zend_Log_Writer_Stream($options['logginglocation']); $soapLogger->addWriter($writer); $soapLogger->info($argList[1]); } return call_user_func_array("parent::_doRequest", $argList); } /** * Don't do this...just here for reference */ protected function _getOptions() { return array( 'testsoapclient' => true, 'logginglocation' => '/some/path/to/log/' ); }
I’m overloading the public function _doRequest() so that I can do the extra processing needed to do my logging. You’ll first notice func_get_args(). I’m using this for my own convenience. I don’t have to stay current with any new arguments that may come.
The other important bit is
call_user_func_array("parent::_doRequest", $argList)
This simply is calling the original parent _doRequest() with the $argList we obtained earlier.