oliver-hader/composer-class-finder

基于Composer自动加载信息的无状态类文件查找器,不实际在PHP进程应用自动加载器。

0.5.1 2020-10-17 14:25 UTC

This package is auto-updated.

Last update: 2024-09-18 01:38:31 UTC


README

基于Composer的类文件查找器,不实际将类加载到内存中,因为它不调用类加载器。本包的目的是获取特定Composer项目的类文件位置。

由于根本不调用类加载器,所以可以通过这种方式独立解决类,而不实际加载它们到内存中。

Plain Composer

<?php
require_once __DIR__ . '/vendor/autoload.php';

$directory = '/other/project/vendor';
$finder = \OliverHader\ComposerClassFinder\TYPO3::resolveFinder($directory);
$filePath = $finder->findFile('Vendor\\Project\\Some\\Utility');

TYPO3特定

解析项目的composer模式

这基本上解决了关于TYPO3 "composer模式"的信息。

$bool = \OliverHader\ComposerClassFinder\TYPO3::isComposerMode($directory);
  • $directory设置为根composer.json的位置返回true(假定确实有一个有效的TYPO3 Composer安装)
  • $directory设置为web-root的位置(包含index.phptypo3conf/autoload/)返回false

应用相应的自动加载信息

对于$directory适用与先前composer-mode部分相同的规则。库不会进行大量目录遍历 - 当提供无效目录时抛出异常。因此,您需要提供正确的值。

信息从基于Composer的数据(只是vendor/)或非Composer模式下从<typo3_src>/vendor/<web-root>/typo3conf/autoload/获取。

$finder = \OliverHader\ComposerClassFinder\TYPO3::resolveFinder($directory);
$filePath = $finder->findFile('BK2K\\BootstrapPackage\\Backend\\ToolbarItem\\VersionToolbarItem');

感谢Composer团队

基本上,这个包只是现有Composer类加载器的包装,相应的代码已从https://github.com/composer/composer复制。

非常感谢您出色的工作!👍