/** * Returns a definition for an asset package. * * @param ContainerBuilder $container Container * @param array $httpUrls SSL assets_base_urls * @param array $sslUrls assets_base_urls * @param string $rootDir Directory where to look for reved assets * @param string $summaryFile Grunt filerev summary file * @param string $cacheDir Kernel cache dir * @param bool $debug Debug mode? * @param string $name Package name * * @return DefinitionDecorator */ private function createPackageDefinition(ContainerBuilder $container, array $httpUrls, array $sslUrls, $rootDir, $summaryFile, $cacheDir, $debug, $name = null) { if (!$httpUrls) { $package = new DefinitionDecorator('grunt.filerev.templating.asset.path_package'); $package->setPublic(false)->setScope('request')->replaceArgument(1, $rootDir)->replaceArgument(2, $summaryFile)->replaceArgument(3, $cacheDir)->replaceArgument(4, $debug); return $package; } if ($httpUrls == $sslUrls) { $package = new DefinitionDecorator('grunt.filerev.templating.asset.url_package'); $package->setPublic(false)->replaceArgument(0, $sslUrls)->replaceArgument(1, $rootDir)->replaceArgument(2, $summaryFile)->replaceArgument(3, $cacheDir)->replaceArgument(4, $debug); return $package; } $prefix = $name ? 'templating.asset.package.' . $name : 'templating.asset.default_package'; $httpPackage = new DefinitionDecorator('grunt.filerev.templating.asset.url_package'); $httpPackage->replaceArgument(0, $httpUrls)->replaceArgument(1, $rootDir)->replaceArgument(2, $summaryFile)->replaceArgument(3, $cacheDir)->replaceArgument(4, $debug); $container->setDefinition($prefix . '.http', $httpPackage); if ($sslUrls) { $sslPackage = new DefinitionDecorator('grunt.filerev.templating.asset.url_package'); $sslPackage->replaceArgument(0, $sslUrls)->replaceArgument(1, $rootDir)->replaceArgument(2, $summaryFile)->replaceArgument(3, $cacheDir)->replaceArgument(4, $debug); } else { $sslPackage = new DefinitionDecorator('grunt.filerev.templating.asset.path_package'); $sslPackage->setScope('request')->replaceArgument(1, $rootDir)->replaceArgument(2, $summaryFile)->replaceArgument(3, $cacheDir)->replaceArgument(4, $debug); } $container->setDefinition($prefix . '.ssl', $sslPackage); $package = new DefinitionDecorator('templating.asset.request_aware_package'); $package->setPublic(false)->setScope('request')->replaceArgument(1, $prefix . '.http')->replaceArgument(2, $prefix . '.ssl'); return $package; }
/** * Converts class hierarchy metadata to definition instances. * * @param ClassHierarchyMetadata $metadata * @return array an array of Definition instances */ public function convert(ClassHierarchyMetadata $metadata) { static $count = 0; $definitions = array(); $previous = null; foreach ($metadata->classMetadata as $classMetadata) { if (null === $previous && null === $classMetadata->parent) { $definition = new Definition(); } else { $definition = new DefinitionDecorator($classMetadata->parent ?: $previous->id); } $definition->setClass($classMetadata->name); if (null !== $classMetadata->scope) { $definition->setScope($classMetadata->scope); } if (null !== $classMetadata->public) { $definition->setPublic($classMetadata->public); } if (null !== $classMetadata->abstract) { $definition->setAbstract($classMetadata->abstract); } if (null !== $classMetadata->lazy) { $definition->setLazy($classMetadata->lazy); } if (null !== $classMetadata->arguments) { $definition->setArguments($classMetadata->arguments); } $definition->setMethodCalls($classMetadata->methodCalls); $definition->setTags($classMetadata->tags); $definition->setProperties($classMetadata->properties); if (null !== $classMetadata->decorates) { if (!method_exists($definition, 'setDecoratedService')) { throw new InvalidAnnotationException(sprintf("decorations require symfony >=2.8 on class %s", $classMetadata->name)); } $definition->setDecoratedService($classMetadata->decorates, $classMetadata->decoration_inner_name); } if (null !== $classMetadata->deprecated && method_exists($definition, 'setDeprecated')) { $definition->setDeprecated(true, $classMetadata->deprecated); } if (null === $classMetadata->id) { $classMetadata->id = '_jms_di_extra.unnamed.service_' . $count++; } if (0 !== count($classMetadata->initMethods)) { foreach ($classMetadata->initMethods as $initMethod) { $definition->addMethodCall($initMethod); } } elseif (null !== $classMetadata->initMethod) { @trigger_error('ClassMetadata::$initMethod is deprecated since version 1.7 and will be removed in 2.0. Use ClassMetadata::$initMethods instead.', E_USER_DEPRECATED); $definition->addMethodCall($classMetadata->initMethod); } $definitions[$classMetadata->id] = $definition; $previous = $classMetadata; } return $definitions; }
/** * Converts class hierarchy metadata to definition instances. * * @param ClassHierarchyMetadata $metadata * @return array an array of Definition instances */ public function convert(ClassHierarchyMetadata $metadata) { static $count = 0; $definitions = array(); $previous = null; foreach ($metadata->classMetadata as $classMetadata) { if (null === $previous && null === $classMetadata->parent) { $definition = new Definition(); } else { $definition = new DefinitionDecorator($classMetadata->parent ?: $previous->id); } $definition->setClass($classMetadata->name); if (null !== $classMetadata->scope) { $definition->setScope($classMetadata->scope); } if (null !== $classMetadata->public) { $definition->setPublic($classMetadata->public); } if (null !== $classMetadata->abstract) { $definition->setAbstract($classMetadata->abstract); } if (null !== $classMetadata->arguments) { $definition->setArguments($classMetadata->arguments); } $definition->setMethodCalls($classMetadata->methodCalls); $definition->setTags($classMetadata->tags); $definition->setProperties($classMetadata->properties); if (null === $classMetadata->id) { $classMetadata->id = '_jms_di_extra.unnamed.service_' . $count++; } if ($classMetadata->initMethod) { if (!method_exists($definition, 'setInitMethod')) { throw new \RuntimeException(sprintf('@AfterSetup is not available on your Symfony version.')); } $definition->setInitMethod($classMetadata->initMethod); } $definitions[$classMetadata->id] = $definition; $previous = $classMetadata; } return $definitions; }
/** * Returns a definition for an asset package. */ private function createPackageDefinition(ContainerBuilder $container, array $httpUrls, array $sslUrls, $version, $format, $name = null) { if (!$httpUrls) { $package = new DefinitionDecorator('templating.asset.path_package'); $package->setPublic(false)->setScope('request')->replaceArgument(1, $version)->replaceArgument(2, $format); return $package; } if ($httpUrls == $sslUrls) { $package = new DefinitionDecorator('templating.asset.url_package'); $package->setPublic(false)->replaceArgument(0, $sslUrls)->replaceArgument(1, $version)->replaceArgument(2, $format); return $package; } $prefix = $name ? 'templating.asset.package.' . $name : 'templating.asset.default_package'; $httpPackage = new DefinitionDecorator('templating.asset.url_package'); $httpPackage->replaceArgument(0, $httpUrls)->replaceArgument(1, $version)->replaceArgument(2, $format); $container->setDefinition($prefix . '.http', $httpPackage); if ($sslUrls) { $sslPackage = new DefinitionDecorator('templating.asset.url_package'); $sslPackage->replaceArgument(0, $sslUrls)->replaceArgument(1, $version)->replaceArgument(2, $format); } else { $sslPackage = new DefinitionDecorator('templating.asset.path_package'); $sslPackage->setScope('request')->replaceArgument(1, $version)->replaceArgument(2, $format); } $container->setDefinition($prefix . '.ssl', $sslPackage); $package = new DefinitionDecorator('templating.asset.request_aware_package'); $package->setPublic(false)->setScope('request')->replaceArgument(1, $prefix . '.http')->replaceArgument(2, $prefix . '.ssl'); return $package; }