Вход Регистрация
Файл: gapps/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCreator.php
Строк: 65
<?php

/*
 * This file is part of the Prophecy.
 * (c) Konstantin Kudryashov <ever.zet@gmail.com>
 *     Marcello Duarte <marcello.duarte@gmail.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace ProphecyDoublerGenerator;

use 
ProphecyExceptionDoublerClassCreatorException;

/**
 * Class creator.
 * Creates specific class in current environment.
 *
 * @author Konstantin Kudryashov <ever.zet@gmail.com>
 */
class ClassCreator
{
    private 
$generator;

    
/**
     * Initializes creator.
     *
     * @param ClassCodeGenerator $generator
     */
    
public function __construct(ClassCodeGenerator $generator null)
    {
        
$this->generator $generator ?: new ClassCodeGenerator;
    }

    
/**
     * Creates class.
     *
     * @param string         $classname
     * @param NodeClassNode $class
     *
     * @return mixed
     *
     * @throws ProphecyExceptionDoublerClassCreatorException
     */
    
public function create($classnameNodeClassNode $class)
    {
        
$code $this->generator->generate($classname$class);
        
$return = eval($code);

        if (!
class_exists($classnamefalse)) {
            if (
count($class->getInterfaces())) {
                throw new 
ClassCreatorException(sprintf(
                    
'Could not double `%s` and implement interfaces: [%s].',
                    
$class->getParentClass(), implode(', '$class->getInterfaces())
                ), 
$class);
            }

            throw new 
ClassCreatorException(
                
sprintf('Could not double `%s`.'$class->getParentClass()),
                
$class
            
);
        }

        return 
$return;
    }
}
Онлайн: 0
Реклама