2016-08-05 2 views
1

Извините, если это вопрос новичков. Я просто привык к API-интерфейсу PHP Reflection и независимой от структуры пространству имен.Получить все зависимости классов, которые доступны

У меня есть этот код:

<?php # Script 3.4 - index.php 

require_once __DIR__.'/vendor/autoload.php'; 

use App\ApptEncoder; 
use App\BloggsApptEncoder; 
use App\MegaApptEncoder; 

$userDefinedClasses = array_filter(
    get_declared_classes(), 
    function($className) { 
     return call_user_func(
      array(new ReflectionClass($className), 'isUserDefined') 
     ); 
    } 

); 

echo('<pre>' . var_dump($userDefinedClasses) . '</pre>'); 

Позже в сценарии я зовите ApptEncoder, BloggsApptEncoder и MegaApptEncoder, и они делают работу. Однако в этом var_dump они не отображаются. Все это свидетельствует:

/home/vagrant/code/ullman/index.php:20: 
array (size=2) 
    174 => string 'ComposerAutoloaderInit9447e6ccfd181a47ff4686960bd95f38' (length=54) 
    175 => string 'Composer\Autoload\ClassLoader' (length=29) 

ответ

-1

Я уверен, что это как get_declared_classes() работы:

Возвращает массив имен объявленных классов в текущем скрипте.

Текущий скрипт просто означает текущий файл. До тех пор, пока ваши классы включены в один и тот же файл, они возвращаются get_declared_classes(), иначе вам нужно создать экземпляр нового объекта. Например:

// As of PHP 7.0 
use App\{ApptEncoder as a, BloggsApptEncoder as b, MegaApptEncoder as c}; 

$a = new a(); 
$b = new b(); 
$c = new c(); 

 Смежные вопросы

  • Нет связанных вопросов^_^