/** * @param Symfony\Component\DependencyInjection\ContainerBuilder $container */ function api4_civicrm_container($container) { $container->addResource(new \Symfony\Component\Config\Resource\FileResource(__FILE__)); $container->setDefinition('action_object_provider', new \Symfony\Component\DependencyInjection\Definition('Civi\\API\\Provider\\ActionObjectProvider', array())); $container->findDefinition('dispatcher')->addMethodCall('addSubscriber', array(new \Symfony\Component\DependencyInjection\Reference('action_object_provider'))); $container->findDefinition('civi_api_kernel')->addMethodCall('registerApiProvider', array(new \Symfony\Component\DependencyInjection\Reference('action_object_provider'))); }
<?php $file = __DIR__ . '/container_test5.php'; if (file_exists($file)) { require_once $file; $container = new ProjectServiceContainer(); } else { $container = new Symfony\Component\DependencyInjection\ContainerBuilder(); $container->register('A', 'A'); $ref = [new Symfony\Component\DependencyInjection\Reference('A')]; $definition = new Symfony\Component\DependencyInjection\Definition('B', $ref); $definition->setScope('prototype'); $container->setDefinition('B', $definition); $container->compile(); $dumper = new Symfony\Component\DependencyInjection\Dumper\PhpDumper($container); file_put_contents($file, $dumper->dump()); } //trigger autoloader $a = $container->get('B'); unset($a); $t1 = microtime(true); for ($i = 0; $i < 10000; $i++) { $a = $container->get('B'); } $t2 = microtime(true); $results = ['time' => $t2 - $t1, 'files' => count(get_included_files()), 'memory' => memory_get_peak_usage() / 1024 / 1024]; echo json_encode($results);
$file = __DIR__ . '/container_test6.php'; if (file_exists($file)) { require_once $file; $container = new ProjectServiceContainer(); } else { $container = new Symfony\Component\DependencyInjection\ContainerBuilder(); $classes = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']; for ($i = 0; $i < count($classes); $i++) { if (isset($classes[$i - 1])) { $ref = [new Symfony\Component\DependencyInjection\Reference($classes[$i - 1])]; } else { $ref = []; } $definition = new Symfony\Component\DependencyInjection\Definition($classes[$i], $ref); $definition->setScope('prototype'); $container->setDefinition($classes[$i], $definition); } $container->compile(); $dumper = new Symfony\Component\DependencyInjection\Dumper\PhpDumper($container); file_put_contents($file, $dumper->dump()); } //Trigger autoloader $a = $container->get('J'); unset($a); $t1 = microtime(true); for ($i = 0; $i < 10000; $i++) { $a = $container->get('J'); } $t2 = microtime(true); $results = ['time' => $t2 - $t1, 'files' => count(get_included_files()), 'memory' => memory_get_peak_usage() / 1024 / 1024]; echo json_encode($results);