类映射生成器

编辑本页

警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 2.3,现已不再维护。

本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。

类映射生成器

加载类通常是一项简单的任务PSR-0而且PSR-4标准。多亏了Symfony Claob娱乐下载ssLoader组件或Composer提供的自动加载机制,您不必手动将类名映射到实际的PHP文件。现在,PHP库通常通过Composer提供自动加载支持。

但有时你可能不得不使用没有任何自动加载支持的第三方库,因此迫使你手动加载每个类。例如,想象一个具有以下目录结构的库:

1 2 3 4 5 6 7 8 9
图书馆/├──酒吧/│├──巴兹/││└──Boo.php│└──直接给└──foo /├──酒吧/│└──直接给└──写到

这些文件包含以下类:

文件 类名
图书馆/酒吧/巴兹/ Boo.php Acme \ \巴兹
库/酒吧/直接给 Acme \酒吧
库/ foo / bar /直接给 Acme \ Foo \酒吧
库/ foo /写到 Acme Foo \

为了使您的工作更轻松,ClassLoader组件附带了一个ClassMapGenerator类,它使创建类名到文件的映射成为可能。

生成类映射

要生成类映射,只需将类文件的根目录传递给createMap ()方法:

1 2 3
使用ob娱乐下载组件类加载器ClassMapGenerator;var_dump (ClassMapGenerator::createMap (__DIR__' /图书馆'));

给定上表中的文件和类,你应该看到如下输出:

1 2 3 4 5 6 7
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)

转储类映射

当涉及到自动加载时,将类映射写入控制台输出实际上是不够的。幸运的是,ClassMapGenerator提供了dump ()方法将生成的类映射保存到文件系统:

1 2 3
使用ob娱乐下载组件类加载器ClassMapGenerator;ClassMapGenerator::转储(__DIR__' /图书馆'__DIR__' / class_map.php ');

这个调用dump ()类映射生成类映射并将其写入class_map.php在同一目录下的文件,内容如下:

1 2 3 4 5 6
<?php返回数组“Acme Foo \ \”= >' / var / www /图书馆/ foo /写到的“Acme Foo \ \ \ \酒吧”= >' / var / www /图书馆/ foo / bar /直接给的“Acme \ \酒吧\ \巴兹”= >' / var / www /图书馆/酒吧/巴兹/ Boo.php '“Acme \ \酒吧”= >' / var / www /图书馆/酒吧/直接给的,);

不必手动加载每个文件,只需将生成的类映射注册到,例如MapClassLoader

12 3 4 5 6 7 8 9 10 11 12
使用ob娱乐下载组件类加载器MapClassLoader映射包括__DIR__' / class_map.php '加载程序MapClassLoader (映射);加载程序->注册();//你现在可以使用这些类:使用Acme喷火喷火Foo ();/ /……

请注意

这个例子假设你已经有自动加载工作(例如通过作曲家或者ClassLoader组件中的其他类装入器之一。

除了转储一个目录的类映射,你还可以传递一个目录数组来生成类映射(结果实际上与上面的例子相同):

1 2 3 4 5 6
使用ob娱乐下载组件类加载器ClassMapGenerator;ClassMapGenerator::转储(数组__DIR__' /图书馆/酒吧'__DIR__“/图书馆/ foo”),__DIR__' / class_map.php ');
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。