CreateHydratorDirectoryPass.php 1.2 KB

123456789101112131415161718192021222324252627282930
  1. <?php
  2. namespace Symfony\Bundle\DoctrineMongoDBBundle\DependencyInjection\Compiler;
  3. use Symfony\Component\DependencyInjection\ContainerBuilder;
  4. use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
  5. class CreateHydratorDirectoryPass implements CompilerPassInterface
  6. {
  7. public function process(ContainerBuilder $container)
  8. {
  9. if (!$container->hasParameter('doctrine.odm.mongodb.hydrator_dir')) {
  10. return;
  11. }
  12. // Don't do anything if auto_generate_hydrator_classes is false
  13. if (!$container->getParameter('doctrine.odm.mongodb.auto_generate_hydrator_classes')) {
  14. return;
  15. }
  16. // Create document proxy directory
  17. $hydratorCacheDir = $container->getParameter('doctrine.odm.mongodb.hydrator_dir');
  18. if (!is_dir($hydratorCacheDir)) {
  19. if (false === @mkdir($hydratorCacheDir, 0777, true)) {
  20. exit(sprintf('Unable to create the Doctrine Hydrator directory (%s)', dirname($hydratorCacheDir)));
  21. }
  22. } elseif (!is_writable($hydratorCacheDir)) {
  23. exit(sprintf('Unable to write in the Doctrine Hydrator directory (%s)', $hydratorCacheDir));
  24. }
  25. }
  26. }