oliver-hader / composer-class-finder
基于Composer自动加载信息的无状态类文件查找器,不实际在PHP进程应用自动加载器。
0.5.1
2020-10-17 14:25 UTC
Requires
- php: ^7.0
Requires (Dev)
- phpunit/phpunit: ^8.5
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.php
和typo3conf/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复制。
非常感谢您出色的工作!👍