dflydev/composer-autoload

Composer 自动加载工具

v1.0.0-alpha1 2012-11-11 20:16 UTC

This package is auto-updated.

Last update: 2024-08-29 03:35:19 UTC


README

提供一个标准接口,用于访问和读取 Composer 自动加载器。

警告:此API尚不稳定,可能随时更改。

为什么这个库存在?

尽管通常认为应用程序知道底层自动加载器不是最佳实践,但有时访问自动加载器是必需的。

创建此库的主要用例是提供一个 Composer实现PSR-0 Resource Locator

用法

<?php
use Dflydev\Composer\Autoload\ClassLoaderLocator;
$locator = new ClassLoaderLocator;

$reader = $locator->getReader();

// Get access to all of the prefixes registered to all of
// the Composer Class Loaders in one array.
$prefixes = $reader->getPrefixes();

安装

通过 Composerdflydev/composer-autoload 的形式。

要求

  • PHP 5.3+

API

ClassLoaderLocator 类

类加载器

直接访问 Composer 类加载器。

  • Composer\Autoload\ClassLoader[] getClassLoaders():获取所有 Composer 自动加载类加载器实例。
  • Composer\Autoload\ClassLoader|null getFirstClassLoader():获取已注册的第一个类加载器。
  • Composer\Autoload\ClassLoader|null getFirstClassLoader():获取已注册的最后一个类加载器。

类加载器读取器

通过类加载器读取器接口访问底层类加载器。

  • ClassLoaderReaderInterface getReader():获取一个类加载器读取器。

    如果已注册多个类加载器或没有注册类加载器,则将返回一个组合类加载器读取器。

  • ClassLoaderReaderInterface[] getReaders():获取每个已注册类加载器的类加载器读取器。

  • ClassLoaderReaderInterface getFirstReader():获取第一个已注册类加载器的类加载器读取器。

  • ClassLoaderReaderInterface getFirstReader():获取最后一个已注册类加载器的类加载器读取器。

静态方法

  • init():初始化静态实例。

    可用于确保在稍后实际使用之前一切已设置就绪。例如,如果可能要修改已注册的自动加载器列表,这将确保Composer的类加载器可以立即找到并记录。

  • reset():重置静态实例。

    这实际上清除了找到的类加载器实例。下次尝试访问类加载器时,将再次扫描注册的自动加载器列表。

  • set(array $classLoaders):设置类加载器列表。

    这主要供测试用途。

ClassLoaderReaderInterface

模仿 Composer\Autoload\ClassLoader 的数据方法。

  • array getPrefixes():获取命名空间到目录的映射

  • array getFallbackDirs():获取回退目录列表

  • array getClassMap():获取类映射

  • string|null findFile($class):查找特定类的文件。

注意事项

在某些情况下,Composer的类加载器可能被另一个自动加载实现所替换。常见示例是在Composer之上注册专门调试类加载器。在这些情况下,建议在需要autoload.php后立即调用init(),以确保可以找到Composer的类加载器。

<?php
Dflydev\Composer\Autoload\ClassLoaderLocator::init();

许可协议

MIT,见LICENSE。

社区

如果您有问题或想帮忙,请加入irc.freenode.net上的#dflydev频道。