这是一个老问题,但是我认为这是一个更好的解决方案。
只需这样做:
use Symfony\Component\ClassLoader\ClassMapGenerator;
var_dump(ClassMapGenerator::createMap(__DIR__.'/library'));
Run Code Online (Sandbox Code Playgroud)
你得到:
Array
(
[Acme\Foo] => /var/www/library/foo/Bar.php
[Acme\Foo\Bar] => /var/www/library/foo/bar/Foo.php
[Acme\Bar\Baz] => /var/www/library/bar/baz/Boo.php
[Acme\Bar] => /var/www/library/bar/Foo.php
)
Run Code Online (Sandbox Code Playgroud)
(摘自文档)
这样的事情应该可以完成工作:
<?php
foreach (glob('test/class/*.php') as $file)
{
require_once $file;
// get the file name of the current file without the extension
// which is essentially the class name
$class = basename($file, '.php');
if (class_exists($class))
{
$obj = new $class;
$obj->OnCall();
}
}
Run Code Online (Sandbox Code Playgroud)
由于Symfony ClassLoader 组件已被弃用,您可以从 Composer 中使用ClassMapGenerator。
您首先需要添加 Composer 包:
composer require composer/class-map-generator
Run Code Online (Sandbox Code Playgroud)
然后你可以使用:
$map = ClassMapGenerator::createMap(__DIR__ . '/mydirectory');
Run Code Online (Sandbox Code Playgroud)
您将获得具有完全限定名称和文件路径的相关关联表。
| 归档时间: |
|
| 查看次数: |
6204 次 |
| 最近记录: |