Вход Регистрация
Файл: concrete5.7.5.6/concrete/src/Support/Symbol/MetadataGenerator.php
Строк: 69
<?php

namespace ConcreteCoreSupportSymbol;

use 
Core;

class 
MetadataGenerator
{
    public function 
render()
    {
        
$file '<?php namespace PHPSTORM_META { $STATIC_METHOD_TYPES = array(\Core::make('') => array(' PHP_EOL;

        
$legacyHelpers = array();
        
$bindings Core::getBindings();
        foreach (
$bindings as $name => $binding) {
            
/** @var Closure $binding */
            
$reflection = new ReflectionFunction($binding['concrete']);
            
$static $reflection->getStaticVariables();
            
$className null;
            if (!isset(
$static['concrete'])) {
                try {
                    
$class Core::make($name);

                    if (
is_object($class)) {
                        
$className get_class($class);
                    }
                } catch (
Exception $e) {}
            } else {
                
$className $static['concrete'];
            }

            if (
$className !== null && $className !== get_class($this)) {
                if (
$className[0] !== '\') {
                    $className = '
\' . $className;
                }

                $file .= ''' 
$name '' instanceof ' . $className . ',' . PHP_EOL;

                if (substr($name, 0, 7) === '
helper/') {
                    $legacyHelpers[substr($name, 7)] = $className;
                }
            }
        }

        $app = Core::make('
app');
        $reflection = new ReflectionClass($app);
        $instances = $reflection->getProperty("instances");
        $instances->setAccessible(true); // :)
        foreach ($instances->getValue($app) as $name => $instance) {
            if (!isset($bindings[$name])) {
                $className = get_class($instance);
                $file .= ''' 
$name '' instanceof ' . $className . ',' . PHP_EOL;
            }
        }

        $file .= '
), Loader::helper('') => array(';
        foreach ($legacyHelpers as $legacyHelper => $className) {
            $file .= ''' 
$legacyHelper '' instanceof ' . $className . ',' . PHP_EOL;
        }

        $file .= '
), Package::getByHandle('') => array(';
        $packages = Package::getAvailablePackages(false);
        foreach ($packages as $package) {
            /** @var Package $package */
            $file .= ''' 
$package->getPackageHandle() . '' instanceof \' . get_class($package) . ',' . PHP_EOL;
        }

        $file .= '
));}';

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