tweaked previous merge
This commit is contained in:
parent
dfd605fc1b
commit
31a35aa8a6
@ -20,7 +20,7 @@ use Symfony\Component\DependencyInjection\Definition;
|
||||
use Symfony\Component\DependencyInjection\LazyProxy\Instantiator\InstantiatorInterface;
|
||||
|
||||
/**
|
||||
* Runtime lazy loading proxy generator
|
||||
* Runtime lazy loading proxy generator.
|
||||
*
|
||||
* @author Marco Pivetta <ocramius@gmail.com>
|
||||
*/
|
||||
@ -50,7 +50,7 @@ class RuntimeInstantiator implements InstantiatorInterface
|
||||
{
|
||||
return $this->factory->createProxy(
|
||||
$definition->getClass(),
|
||||
function (& $wrappedInstance, LazyLoadingInterface $proxy) use ($realInstantiator) {
|
||||
function (&$wrappedInstance, LazyLoadingInterface $proxy) use ($realInstantiator) {
|
||||
$proxy->setProxyInitializer(null);
|
||||
|
||||
$wrappedInstance = call_user_func($realInstantiator);
|
||||
|
@ -20,7 +20,7 @@ use Symfony\Component\DependencyInjection\Definition;
|
||||
use Symfony\Component\DependencyInjection\LazyProxy\PhpDumper\DumperInterface;
|
||||
|
||||
/**
|
||||
* Generates dumped php code of proxies via reflection
|
||||
* Generates dumped php code of proxies via reflection.
|
||||
*
|
||||
* @author Marco Pivetta <ocramius@gmail.com>
|
||||
*/
|
||||
@ -50,9 +50,7 @@ class ProxyDumper implements DumperInterface
|
||||
*/
|
||||
public function isProxyCandidate(Definition $definition)
|
||||
{
|
||||
return $definition->isLazy()
|
||||
&& ($class = $definition->getClass())
|
||||
&& class_exists($class);
|
||||
return $definition->isLazy() && ($class = $definition->getClass()) && class_exists($class);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -68,7 +66,7 @@ class ProxyDumper implements DumperInterface
|
||||
$instantiation .= " \$this->services['$id'] = \$this->scopedServices['$scope']['$id'] =";
|
||||
}
|
||||
|
||||
$methodName = 'get' . Container::camelize($id) . 'Service';
|
||||
$methodName = 'get'.Container::camelize($id).'Service';
|
||||
$proxyClass = $this->getProxyClassName($definition);
|
||||
|
||||
return <<<EOF
|
||||
@ -76,7 +74,7 @@ class ProxyDumper implements DumperInterface
|
||||
\$container = \$this;
|
||||
|
||||
$instantiation new $proxyClass(
|
||||
function (& \$wrappedInstance, \ProxyManager\Proxy\LazyLoadingInterface \$proxy) use (\$container) {
|
||||
function (&\$wrappedInstance, \ProxyManager\Proxy\LazyLoadingInterface \$proxy) use (\$container) {
|
||||
\$proxy->setProxyInitializer(null);
|
||||
|
||||
\$wrappedInstance = \$container->$methodName(false);
|
||||
@ -103,7 +101,7 @@ EOF;
|
||||
}
|
||||
|
||||
/**
|
||||
* Produces the proxy class name for the given definition
|
||||
* Produces the proxy class name for the given definition.
|
||||
*
|
||||
* @param Definition $definition
|
||||
*
|
||||
@ -111,6 +109,6 @@ EOF;
|
||||
*/
|
||||
private function getProxyClassName(Definition $definition)
|
||||
{
|
||||
return str_replace('\\', '', $definition->getClass()) . '_' . spl_object_hash($definition);
|
||||
return str_replace('\\', '', $definition->getClass()).'_'.spl_object_hash($definition);
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
ProxyManager Bridge
|
||||
===================
|
||||
|
||||
Provides integration for [ProxyManager](https://github.com/Ocramius/ProxyManager) with various Symfony2 components.
|
||||
Provides integration for [ProxyManager][1] with various Symfony2 components.
|
||||
|
||||
Resources
|
||||
---------
|
||||
@ -11,3 +11,5 @@ You can run the unit tests with the following command:
|
||||
$ cd path/to/Symfony/Bridge/ProxyManager/
|
||||
$ composer.phar install --dev
|
||||
$ phpunit
|
||||
|
||||
[1]: https://github.com/Ocramius/ProxyManager
|
||||
|
@ -40,7 +40,7 @@ class PhpDumperTest extends \PHPUnit_Framework_TestCase
|
||||
$dumpedString = $dumper->dump();
|
||||
|
||||
$this->assertStringMatchesFormatFile(
|
||||
__DIR__ . '/../Fixtures/php/lazy_service_structure.txt',
|
||||
__DIR__.'/../Fixtures/php/lazy_service_structure.txt',
|
||||
$dumpedString,
|
||||
'->dump() does generate proxy lazy loading logic.'
|
||||
);
|
||||
@ -52,13 +52,13 @@ class PhpDumperTest extends \PHPUnit_Framework_TestCase
|
||||
*/
|
||||
public function testDumpContainerWithProxyServiceWillShareProxies()
|
||||
{
|
||||
require_once __DIR__ . '/../Fixtures/php/lazy_service.php';
|
||||
require_once __DIR__.'/../Fixtures/php/lazy_service.php';
|
||||
|
||||
$container = new \LazyServiceProjectServiceContainer();
|
||||
|
||||
/* @var $proxy \stdClass_c1d194250ee2e2b7d2eab8b8212368a8 */
|
||||
$proxy = $container->get('foo');
|
||||
|
||||
/*
|
||||
$this->assertInstanceOf('stdClass_c1d194250ee2e2b7d2eab8b8212368a8', $proxy);
|
||||
$this->assertSame($proxy, $container->get('foo'));
|
||||
|
||||
@ -68,5 +68,6 @@ class PhpDumperTest extends \PHPUnit_Framework_TestCase
|
||||
|
||||
$this->assertTrue($proxy->isProxyInitialized());
|
||||
$this->assertSame($proxy, $container->get('foo'));
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,3 @@
|
||||
|
||||
<?php
|
||||
|
||||
use Symfony\Component\DependencyInjection\ContainerInterface;
|
||||
|
@ -9,7 +9,7 @@ class ProjectServiceContainer extends Container
|
||||
$container = $this;
|
||||
|
||||
return $this->services['foo'] = new stdClass_%s(
|
||||
function (& $wrappedInstance, \ProxyManager\Proxy\LazyLoadingInterface $proxy) use ($container) {
|
||||
function (&$wrappedInstance, \ProxyManager\Proxy\LazyLoadingInterface $proxy) use ($container) {
|
||||
$proxy->setProxyInitializer(null);
|
||||
|
||||
$wrappedInstance = $container->getFooService(false);
|
||||
|
@ -75,7 +75,7 @@ class ProxyDumperTest extends \PHPUnit_Framework_TestCase
|
||||
$this->assertStringMatchesFormat(
|
||||
'%wif ($lazyLoad) {%w$container = $this;%wreturn $this->services[\'foo\'] = new '
|
||||
. 'SymfonyBridgeProxyManagerLazyProxyTestsInstantiatorProxyDumperTest_%s(%wfunction '
|
||||
. '(& $wrappedInstance, \ProxyManager\Proxy\LazyLoadingInterface $proxy) use ($container) {'
|
||||
. '(&$wrappedInstance, \ProxyManager\Proxy\LazyLoadingInterface $proxy) use ($container) {'
|
||||
. '%w$proxy->setProxyInitializer(null);%w$wrappedInstance = $container->getFooService(false);'
|
||||
. '%wreturn true;%w}%w);%w}%w',
|
||||
$code
|
||||
|
@ -539,8 +539,7 @@ EOF;
|
||||
|
||||
if ($definition->isLazy()) {
|
||||
$lazyInitialization = '$lazyLoad = true';
|
||||
$lazyInitializationDoc = "\n * @param boolean \$lazyLoad whether to try lazy-loading the"
|
||||
. " service with a proxy\n *";
|
||||
$lazyInitializationDoc = "\n * @param boolean \$lazyLoad whether to try lazy-loading the service with a proxy\n *";
|
||||
} else {
|
||||
$lazyInitialization = '';
|
||||
$lazyInitializationDoc = '';
|
||||
|
@ -23,8 +23,10 @@ use Symfony\Component\DependencyInjection\Definition;
|
||||
interface InstantiatorInterface
|
||||
{
|
||||
/**
|
||||
* Instantiates a proxy object.
|
||||
*
|
||||
* @param ContainerInterface $container the container from which the service is being requested
|
||||
* @param Definition $definition the definitions of the requested service
|
||||
* @param Definition $definition the definition of the requested service
|
||||
* @param string $id identifier of the requested service
|
||||
* @param callable $realInstantiator zero-argument callback that is capable of producing the real
|
||||
* service instance
|
||||
|
Reference in New Issue
Block a user