mirror of
https://github.com/torrentpier/torrentpier-lts.git
synced 2025-03-01 15:21:02 +03:00
69 lines
2.1 KiB
PHP
69 lines
2.1 KiB
PHP
<?php
|
|
/**
|
|
* Zend Framework (http://framework.zend.com/)
|
|
*
|
|
* @link http://github.com/zendframework/zf2 for the canonical source repository
|
|
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
|
* @license http://framework.zend.com/license/new-bsd New BSD License
|
|
*/
|
|
|
|
namespace Zend\ServiceManager\Di;
|
|
|
|
use Zend\Di\Di;
|
|
use Zend\ServiceManager\AbstractFactoryInterface;
|
|
use Zend\ServiceManager\ServiceLocatorInterface;
|
|
|
|
class DiAbstractServiceFactory extends DiServiceFactory implements AbstractFactoryInterface
|
|
{
|
|
/**
|
|
* Constructor
|
|
*
|
|
* @param \Zend\Di\Di $di
|
|
* @param null|string|\Zend\Di\InstanceManager $useServiceLocator
|
|
*/
|
|
public function __construct(Di $di, $useServiceLocator = self::USE_SL_NONE)
|
|
{
|
|
$this->di = $di;
|
|
if (in_array($useServiceLocator, array(self::USE_SL_BEFORE_DI, self::USE_SL_AFTER_DI, self::USE_SL_NONE))) {
|
|
$this->useServiceLocator = $useServiceLocator;
|
|
}
|
|
|
|
// since we are using this in a proxy-fashion, localize state
|
|
$this->definitions = $this->di->definitions;
|
|
$this->instanceManager = $this->di->instanceManager;
|
|
}
|
|
|
|
/**
|
|
* {@inheritDoc}
|
|
*/
|
|
public function createServiceWithName(ServiceLocatorInterface $serviceLocator, $name, $requestedName)
|
|
{
|
|
$this->serviceLocator = $serviceLocator;
|
|
if ($requestedName) {
|
|
return $this->get($requestedName, array());
|
|
}
|
|
|
|
return $this->get($name, array());
|
|
}
|
|
|
|
/**
|
|
* {@inheritDoc}
|
|
*/
|
|
public function canCreateServiceWithName(ServiceLocatorInterface $serviceLocator, $name, $requestedName)
|
|
{
|
|
if ($this->instanceManager->hasSharedInstance($requestedName)
|
|
|| $this->instanceManager->hasAlias($requestedName)
|
|
|| $this->instanceManager->hasConfig($requestedName)
|
|
|| $this->instanceManager->hasTypePreferences($requestedName)
|
|
) {
|
|
return true;
|
|
}
|
|
|
|
if (! $this->definitions->hasClass($requestedName) || interface_exists($requestedName)) {
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
}
|