つまり、外部クラスからサービス マネージャー (ロケーター) にアクセスする必要があります。
詳細:
ZF2 プロジェクトに次の構造があります。
Api.php は、コントローラーで作成された SOAP サーバーで使用するクラスです。
class IncomingInterfaceController extends AbstractActionController
{
...
public function indexAction()
{
if (isset($_GET['wsdl']))
$this->handleWSDL();
else
$this->handleSOAP();
return $this->getResponse();
}
private function handleWSDL()
{
$autodiscover = new AutoDiscover();
$autodiscover->setClass('\Application\Api\Api')->setUri($this->getURI());
$autodiscover->handle();
}
この Api.php クラスでは、サービスにアクセスする必要があります。
Api.php クラスで次のようなものが必要です。
public function OnNewDeal($uid)
{
$error_log=$this->getServiceLocator()->get('error_log'); // this doesn't work!
$error_log->write_error('error_text');
}