Skip to content

Commit 487fccc

Browse files
committed
Merge pull request #1447 from richardmiller/removing_moved_container_dumping_section
Removing moved container dumping section
2 parents 51a44fa + 0919952 commit 487fccc

File tree

1 file changed

+0
-78
lines changed

1 file changed

+0
-78
lines changed

components/dependency_injection/introduction.rst

Lines changed: 0 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -279,81 +279,3 @@ The ``newsletter_manager`` and ``mailer`` services can be set up using config fi
279279
$container->register('newsletter_manager', 'NewsletterManager')
280280
->addMethodCall('setMailer', new Reference('mailer');
281281
282-
Dumping the Configuration for Performance
283-
-----------------------------------------
284-
285-
Using configuration files to manage the service container can be much easier
286-
to understand than using PHP once there are a lot of services. This ease comes
287-
at a price though when it comes to performance as the config files need to be
288-
parsed and the PHP configuration built from them. You can have the best of both
289-
worlds though by using configuration files and then dumping and caching the resulting
290-
configuration. The ``PhpDumper`` makes dumping the compiled container easy::
291-
292-
use Symfony\Component\DependencyInjection\ContainerBuilder;
293-
use Symfony\Component\Config\FileLocator;
294-
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
295-
use Symfony\Component\DependencyInjection\Dumper\PhpDumper
296-
297-
$container = new ContainerBuilder();
298-
$loader = new XmlFileLoader($container, new FileLocator(__DIR__));
299-
$loader->load('services.xml');
300-
301-
$file = __DIR__ .'/cache/container.php';
302-
303-
if (file_exists($file)) {
304-
require_once $file;
305-
$container = new ProjectServiceContiner();
306-
} else {
307-
$container = new ContainerBuilder();
308-
$loader = new XmlFileLoader($container, new FileLocator(__DIR__));
309-
$loader->load('services.xml');
310-
311-
$dumper = new PhpDumper($container);
312-
file_put_contents($file, $dumper->dump());
313-
}
314-
315-
``ProjectServiceContiner`` is the default name given to the dumped container
316-
class, you can change this though this with the ``class`` option when you dump
317-
it::
318-
319-
// ...
320-
$file = __DIR__ .'/cache/container.php';
321-
322-
if (file_exists($file)) {
323-
require_once $file;
324-
$container = new MyCachedContainer();
325-
} else {
326-
$container = new ContainerBuilder();
327-
$loader = new XmlFileLoader($container, new FileLocator(__DIR__));
328-
$loader->load('services.xml');
329-
330-
$dumper = new PhpDumper($container);
331-
file_put_contents($file, $dumper->dump(array('class' => 'MyCachedContainer')));
332-
}
333-
334-
You will now get the speed of the PHP configured container with the ease of using
335-
configuration files. In the above example you will need to delete the cached
336-
container file whenever you make any changes. Adding a check for a variable that
337-
determines if you are in debug mode allows you to keep the speed of the cached
338-
container in production but getting an up to date configuration whilst developing
339-
your application::
340-
341-
// ...
342-
343-
// set $isDebug based on something in your project
344-
345-
$file = __DIR__ .'/cache/container.php';
346-
347-
if (!$isDebug && file_exists($file)) {
348-
require_once $file;
349-
$container = new MyCachedContainer();
350-
} else {
351-
$container = new ContainerBuilder();
352-
$loader = new XmlFileLoader($container, new FileLocator(__DIR__));
353-
$loader->load('services.xml');
354-
355-
if(!$isDebug) {
356-
$dumper = new PhpDumper($container);
357-
file_put_contents($file, $dumper->dump(array('class' => 'MyCachedContainer')));
358-
}
359-
}

0 commit comments

Comments
 (0)