1

みんな、この時点で、頭から髪を引き抜き始めようとしています。これを達成する方法が見つかりません。

WebServices モジュールの src フォルダーの下に作成したカスタム フォルダーに属するカスタム クラスがあります。このクラスを別のモジュール/コントローラー内からインスタンス化できるようにする必要がありますが、それを実行してサービスメンバーをダンプすると、null が含まれます。ApiAuthentication クラス内からサービス マネージャーにアクセスできるようにするにはどうすればよいですか。

どんな助けでも大歓迎です。ありがとう

<?php

namespace WebServices\Services;

use Zend\ServiceManager\ServiceLocatorAwareInterface;
use Zend\ServiceManager\ServiceLocatorInterface;

class ApiAuthenticationService extends \Zend\Soap\Client implements ServiceLocatorAwareInterface{

    public $services;

    function __construct($options = null){

        parent::__construct('http://tinysoa.local/soap/security/api_authentication?wsdl',$options);

    }

    public function setServiceLocator(ServiceLocatorInterface $locator)
    {
        $this->services = $locator;
    }

    public function getServiceLocator()
    {
        return $this->services;
    }

}

別のモジュール/コントローラー内からこれを呼び出すと、null 値がダンプされます。

class IndexController extends AbstractActionController
{

       public function indexAction()
            {
                $a = new \WebServices\Services\ApiAuthenticationService();

                var_dump($a->services);
4

2 に答える 2

1

サービスを Service Config に登録し、コントローラーの getServiceLocator() メソッドを介してアクセスします。

Module.php

public function getServiceConfig()
{
  return array(
    'invokables' => array(
        'my_service' => 'WebServices\Services\ApiAuthenticationService'
    )
  );
}

コントローラ

public function indexAction()
{
    $service = $this->getServiceLocator()->get('my_service');
}
于 2013-08-28T19:51:51.550 に答える