2016-08-05 55 views
1

对不起,如果这是一个新手问题。我只是习惯了PHP的Reflection API和独立于框架的命名空间。获取所有可用的类依赖关系

我有这样的代码:

<?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();