/**
  * @inheritDoc
  */
 public function __invoke($file, $namespace, $commandName)
 {
     $commandName = ucfirst($commandName);
     require $file;
     $reflectionClass = new FileReflection($file);
     $fileGenerator = FileGenerator::fromReflection($reflectionClass);
     $fileGenerator->setFilename($file);
     $classGenerator = $fileGenerator->getClass();
     /* @var $method MethodGenerator */
     foreach ($classGenerator->getMethods() as $method) {
         if (strpos($method->getName(), 'when') !== 0) {
             continue;
         }
         /* @var $parameter ParameterGenerator */
         foreach ($method->getParameters() as $parameter) {
             $fileGenerator->setUse($parameter->getType());
         }
     }
     $namespace = ltrim($namespace, '\\') . '\\';
     $fileGenerator->setUse($namespace . $commandName);
     // workaround for import namespace
     if ($classToExtend = $classGenerator->getExtendedClass()) {
         $classGenerator->setExtendedClass(substr($classToExtend, strrpos($classToExtend, '\\') + 1));
     }
     $classGenerator->addMethodFromGenerator($this->methodWhenEvent($commandName, $namespace));
     return $fileGenerator;
 }
    public function testFromFileReflection()
    {
        $this->markTestIncomplete('Some scanning capabilities are incomplete, including file DocBlock comment retrieval and method scanning');
        $file = __DIR__ . '/TestAsset/TestSampleSingleClass.php';
        require_once $file;
        $codeGenFileFromDisk = FileGenerator::fromReflection($fileRefl = new FileReflection($file));
        $codeGenFileFromDisk->getClass()->addMethod('foobar');
        $expectedOutput = <<<EOS
<?php
/**
 * File header here
 *
 * @author Ralph Schindler <*****@*****.**>
 */



/* Zend_Code_Generator_FileGenerator-ClassMarker: {ZendTest\\Code\\Generator\\TestAsset\\TestSampleSingleClass} */


namespace ZendTest\\Code\\Generator\\TestAsset;

/**
 * class docblock
 *
 * @package Zend_Reflection_TestSampleSingleClass
 *
 */
class TestSampleSingleClass
{

    /**
     * Enter description here...
     *
     * @return bool
     *
     */
    public function someMethod()
    {
        /* test test */
    }

    public function foobar()
    {
    }


}


EOS;
        $this->assertEquals($expectedOutput, $codeGenFileFromDisk->generate());
    }
Esempio n. 3
0
    public function testFromFileReflection()
    {
        //$this->markTestSkipped('Must support namespaces');
        $file = __DIR__ . '/TestAsset/TestSampleSingleClass.php';
        require_once $file;
        $codeGenFileFromDisk = FileGenerator::fromReflection(new FileReflection($file));
        $codeGenFileFromDisk->getClass()->setMethod(array('name' => 'foobar'));
        $expectedOutput = <<<EOS
<?php
/**
 * File header here
 *
 * @author Ralph Schindler <*****@*****.**>
 *
 */

/**
 * @namespace
 */
namespace ZendTest\\Code\\Generator\\TestAsset;

/**
 * class docblock
 *
 * @package Zend_Reflection_TestSampleSingleClass
 *
 */
class TestSampleSingleClass
{

    /**
     * Enter description here...
     *
     * @return bool
     *
     */
    public function someMethod()
    {
        /* test test */
    }

    public function foobar()
    {
    }


}


EOS;
        $this->assertEquals($expectedOutput, $codeGenFileFromDisk->generate());
    }