类地图生成器

编辑该页面

警告:你浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 3.4,不再维护。

这个页面的更新版本Symf欧宝娱乐app下载地址ony 6.2(当前的稳定版本)。

类地图生成器

加载一个类通常是一个简单的任务了PSR-0PSR-4标准。由于Symfony作曲家提供欧宝娱乐app下载地址的类加载器组件或半自动的机制,你不必手动你的类名映射到实际的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
使用欧宝娱乐app下载地址\组件\类加载器\ClassMapGenerator;var_dump (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
使用欧宝娱乐app下载地址\组件\类加载器\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
使用欧宝娱乐app下载地址\组件\类加载器\MapClassLoader;美元映射=包括__DIR__' / class_map.php ';美元加载程序=MapClassLoader (美元映射);美元加载程序- >注册();/ /现在可以使用的类:使用Acme\喷火;美元喷火=Foo ();/ /……

请注意

示例假设您已经有了半自动的工作(如通过作曲家或另一个类装入器的类加载器组件)。

除了倾销类映射为一个目录,您还可以通过数组的目录生成类地图(结果实际上是一样的在上面的示例中):

1 2 3 4 5 6
使用欧宝娱乐app下载地址\组件\类加载器\ClassMapGenerator;ClassMapGenerator::转储([__DIR__' /图书馆/酒吧',__DIR__“/图书馆/ foo”),__DIR__' / class_map.php ');
这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。