Вход Регистрация
Файл: symfony-2.7/src/Symfony/Bridge/Doctrine/CacheWarmer/ProxyCacheWarmer.php
Строк: 88
<?php

/*
 * This file is part of the Symfony package.
 *
 * (c) Fabien Potencier <fabien@symfony.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace SymfonyBridgeDoctrineCacheWarmer;

use 
DoctrineCommonPersistenceManagerRegistry;
use 
SymfonyComponentHttpKernelCacheWarmerCacheWarmerInterface;

/**
 * The proxy generator cache warmer generates all entity proxies.
 *
 * In the process of generating proxies the cache for all the metadata is primed also,
 * since this information is necessary to build the proxies in the first place.
 *
 * @author Benjamin Eberlei <kontakt@beberlei.de>
 */
class ProxyCacheWarmer implements CacheWarmerInterface
{
    private 
$registry;

    
/**
     * Constructor.
     *
     * @param ManagerRegistry $registry A ManagerRegistry instance
     */
    
public function __construct(ManagerRegistry $registry)
    {
        
$this->registry $registry;
    }

    
/**
     * This cache warmer is not optional, without proxies fatal error occurs!
     *
     * @return false
     */
    
public function isOptional()
    {
        return 
false;
    }

    
/**
     * {@inheritdoc}
     */
    
public function warmUp($cacheDir)
    {
        foreach (
$this->registry->getManagers() as $em) {
            
// we need the directory no matter the proxy cache generation strategy
            
if (!is_dir($proxyCacheDir $em->getConfiguration()->getProxyDir())) {
                if (
false === @mkdir($proxyCacheDir0777true)) {
                    throw new 
RuntimeException(sprintf('Unable to create the Doctrine Proxy directory "%s".'$proxyCacheDir));
                }
            } elseif (!
is_writable($proxyCacheDir)) {
                throw new 
RuntimeException(sprintf('The Doctrine Proxy directory "%s" is not writeable for the current system user.'$proxyCacheDir));
            }

            
// if proxies are autogenerated we don't need to generate them in the cache warmer
            
if ($em->getConfiguration()->getAutoGenerateProxyClasses()) {
                continue;
            }

            
$classes $em->getMetadataFactory()->getAllMetadata();

            
$em->getProxyFactory()->generateProxyClasses($classes);
        }
    }
}
Онлайн: 1
Реклама