private function getExtractCode()
 {
     $extractCode = array('constants' => array(), 'class' => array());
     $compactor = new Php();
     $code = file_get_contents(__DIR__ . '/../../../../lib/CmPayments/Crate/Extract.php');
     $code = $compactor->compact($code);
     $code = preg_replace('/\\n+/', "\n", $code);
     $code = explode("\n", $code);
     $code = array_slice($code, 2);
     foreach ($code as $i => $line) {
         if (0 === strpos($line, 'use') && false === strpos($line, '\\')) {
             unset($code[$i]);
         } elseif (0 === strpos($line, 'define')) {
             $extractCode['constants'][] = $line;
         } else {
             $extractCode['class'][] = $line;
         }
     }
     return $extractCode;
 }
示例#2
0
    public function testIssue14()
    {
        $original = <<<CODE
<?php

// autoload_real.php @generated by Composer

/**
 * @author Made Up <*****@*****.**>
 */
class ComposerAutoloaderInitc22fe6e3e5ad79bad24655b3e52999df
{
    private static \$loader;

    /** @inline annotation */
    public static function loadClassLoader(\$class)
    {
        if ('Composer\\Autoload\\ClassLoader' === \$class) {
            require __DIR__ . '/ClassLoader.php';
        }
    }

    public static function getLoader()
    {
        if (null !== self::\$loader) {
            return self::\$loader;
        }

        spl_autoload_register(array('ComposerAutoloaderInitc22fe6e3e5ad79bad24655b3e52999df', 'loadClassLoader'), true, true);
        self::\$loader = \$loader = new \\Composer\\Autoload\\ClassLoader();
        spl_autoload_unregister(array('ComposerAutoloaderInitc22fe6e3e5ad79bad24655b3e52999df', 'loadClassLoader'));

        \$vendorDir = dirname(__DIR__);
        \$baseDir = dirname(\$vendorDir);

        \$includePaths = require __DIR__ . '/include_paths.php';
        array_push(\$includePaths, get_include_path());
        set_include_path(join(PATH_SEPARATOR, \$includePaths));

        \$map = require __DIR__ . '/autoload_namespaces.php';
        foreach (\$map as \$namespace => \$path) {
            \$loader->set(\$namespace, \$path);
        }

        \$map = require __DIR__ . '/autoload_psr4.php';
        foreach (\$map as \$namespace => \$path) {
            \$loader->setPsr4(\$namespace, \$path);
        }

        \$classMap = require __DIR__ . '/autoload_classmap.php';
        if (\$classMap) {
            \$loader->addClassMap(\$classMap);
        }

        \$loader->register(true);

        return \$loader;
    }
}

CODE;
        $expected = <<<CODE
<?php






class ComposerAutoloaderInitc22fe6e3e5ad79bad24655b3e52999df
{
private static \$loader;


public static function loadClassLoader(\$class)
{
if ('Composer\\Autoload\\ClassLoader' === \$class) {
require __DIR__ . '/ClassLoader.php';
}
}

public static function getLoader()
{
if (null !== self::\$loader) {
return self::\$loader;
}

spl_autoload_register(array('ComposerAutoloaderInitc22fe6e3e5ad79bad24655b3e52999df', 'loadClassLoader'), true, true);
self::\$loader = \$loader = new \\Composer\\Autoload\\ClassLoader();
spl_autoload_unregister(array('ComposerAutoloaderInitc22fe6e3e5ad79bad24655b3e52999df', 'loadClassLoader'));

\$vendorDir = dirname(__DIR__);
\$baseDir = dirname(\$vendorDir);

\$includePaths = require __DIR__ . '/include_paths.php';
array_push(\$includePaths, get_include_path());
set_include_path(join(PATH_SEPARATOR, \$includePaths));

\$map = require __DIR__ . '/autoload_namespaces.php';
foreach (\$map as \$namespace => \$path) {
\$loader->set(\$namespace, \$path);
}

\$map = require __DIR__ . '/autoload_psr4.php';
foreach (\$map as \$namespace => \$path) {
\$loader->setPsr4(\$namespace, \$path);
}

\$classMap = require __DIR__ . '/autoload_classmap.php';
if (\$classMap) {
\$loader->addClassMap(\$classMap);
}

\$loader->register(true);

return \$loader;
}
}

CODE;
        $tokenizer = new Tokenizer();
        $tokenizer->ignore(array('author', 'inline'));
        $this->php->setTokenizer($tokenizer);
        $this->assertEquals($expected, $this->php->compact($original));
    }
示例#3
0
 /**
  * Embed the Extract class in the stub?
  *
  * @param boolean $extract Embed the class?
  * @param boolean $force   Force the use of the class?
  *
  * @return StubGenerator The stub generator.
  */
 public function extract($extract, $force = false)
 {
     $this->extract = $extract;
     $this->extractForce = $force;
     if ($extract) {
         $this->extractCode = array('constants' => array(), 'class' => array());
         $compactor = new Php();
         $code = file_get_contents(__DIR__ . '/Extract.php');
         $code = $compactor->compact($code);
         $code = preg_replace('/\\n+/', "\n", $code);
         $code = explode("\n", $code);
         $code = array_slice($code, 2);
         foreach ($code as $i => $line) {
             if (0 === strpos($line, 'use') && false === strpos($line, '\\')) {
                 unset($code[$i]);
             } elseif (0 === strpos($line, 'define')) {
                 $this->extractCode['constants'][] = $line;
             } else {
                 $this->extractCode['class'][] = $line;
             }
         }
     }
     return $this;
 }