पर नहीं है, तो मैं वास्तव में getServiceLocator का उपयोग करने के लिए कब और कब नहीं हूं इस पर उलझन में हूं। एक उदाहरण के रूप:ZF2 जब getServiceLocator() का उपयोग करना है और
+ Module
-+ Helloworld
--+ src
---+ Controller
----+ IndexController.php
----+ IndexControllerFactory.php
---+ Service
----+ LogginService.php
----+ GreetingService.php
----+ GreetingServiceFactory.php
GreetingServiceFactory.php सामग्री है:
<?php
namespace Helloworld\Service;
use Zend\ServiceManager\FactoryInterface;
use Zend\ServiceManager\ServiceLocatorInterface;
class GreetingServiceFactory implements FactoryInterface
{
public function createService (ServiceLocatorInterface $serviceLocator)
{
$greetingService = new GreetingService();
$greetingService->setEventManager($serviceLocator->get('eventManager'));
$loggingService = $serviceLocator->get('loggingService');
$greetingService->getEventManager()->attach('getGreeting', array(
$loggingService,
'onGetGreeting'
));
return $greetingService;
}
}
और IndexControllerFactory.php सामग्री है:
<?php
namespace Helloworld\Controller;
use Zend\ServiceManager\FactoryInterface;
use Zend\ServiceManager\ServiceLocatorInterface;
class IndexControllerFactory implements FactoryInterface
{
public function createService (ServiceLocatorInterface $serviceLocator)
{
$ctr = new IndexController();
$ctr->setGreetingService($serviceLocator->getServiceLocator()
->get('greetingService'));
return $ctr;
}
}
आप देख सकते हैं, मैं $ serviceLocator की जरूरत -> मेरे नियंत्रक फैक्टरी में getServiceLocator() प्राप्त करें, लेकिन मेरे सेवा कारखाने में नहीं। क्यूं कर? दोनों एक ही इंटरफ़ेस ServiceLocatorInterface का उपयोग करते हैं जो getServiceLocator() विधि को भी परिभाषित नहीं करता है।
module.config.php:
'controllers' => array(
'factories' => array(
'Helloworld\Controller\Index' => 'Helloworld\Controller\IndexControllerFactory'
)
)
,
'service_manager' => array(
'invokables' => array(
'loggingService' => 'Helloworld\Service\LoggingService'
),
'factories' => array(
'greetingService'=> 'Helloworld\Service\GreetingServiceFactory'
),
)
मैं किसी भी स्पष्टीकरण :)
आपका दिन शुभ हो कि सराहना करेंगे!
उस आरेख को बनाने के लिए आपने किस टूल का उपयोग किया था? सुंदर दिखाई देता है। – Leven
@ लेवेन कि यूयूएमएल है – Ocramius