类地图生成器
编辑该页面警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 2.5,不再维护。
读这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。
类地图生成器
加载一个类通常是一个简单的任务了PSR-0和PSR-4标准。由于Symfony作曲家提供ob娱乐下载的类加载器组件或半自动的机制,你不必手动你的类名映射到实际的PHP文件。如今,PHP库通常是通过作曲家与半自动的支持。
但是有时你可能需要使用第三方库,没有任何半自动的支持,因此迫使你手动加载每个类。例如,想象一个库和目录结构如下:
1 2 3 4 5 6 7 8 9
图书馆/├──酒吧/│├──巴兹/││└──唉。php│└──Foo。php└──foo /├──酒吧/│└──foo。php└──写到
这些文件包含以下课程:
文件 | 类名 |
---|---|
图书馆/酒吧/巴兹/ Boo.php |
Acme \ \巴兹 |
库/酒吧/直接给 |
Acme \酒吧 |
库/ foo / bar /直接给 |
Acme \ Foo \酒吧 |
库/ foo /写到 |
Acme Foo \ |
使你的生活更容易,附带了一个类加载器组件ClassMapGenerator类,就可以创建一个映射文件的类名。
生成一个类图
生成类地图,仅仅通过你的类文件的根目录createMap ()方法:
1 2 3
使用ob娱乐下载\组件\类加载器\ClassMapGenerator;print_r (ClassMapGenerator::createMap (__DIR__。' /图书馆'));
考虑到文件和类从上面的表中,您应该看到一个输出如下:
1 2 3 4 5 6 7
数组(Foo [Acme \] = > /var/www/library/foo/Bar.php[酒吧Acme \ Foo \] = > /var/www/library/foo/bar/Foo.php (Acme \酒吧\ Baz) = > /var/www/library/bar/baz/Boo.php[酒吧Acme \] = > /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:
1 2 3 4 5 6 7 8 9 10 11 12
使用ob娱乐下载\组件\类加载器\MapClassLoader;美元映射=包括__DIR__。' / class_map.php ';美元加载程序=新MapClassLoader (美元映射);美元加载程序- >注册();/ /现在可以使用的类:使用Acme\喷火;美元喷火=新Foo ();/ /……
请注意
示例假设您已经有了半自动的工作(如通过作曲家或另一个类装入器的类加载器组件。
除了倾销类映射为一个目录,您还可以通过数组的目录生成类地图(结果实际上是一样的在上面的示例中):
1 2 3 4 5 6
使用ob娱乐下载\组件\类加载器\ClassMapGenerator;ClassMapGenerator::转储(数组(__DIR__。' /图书馆/酒吧',__DIR__。“/图书馆/ foo”),__DIR__。' / class_map.php ');
这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。