mirror of
https://gitee.com/fastadminnet/framework.git
synced 2026-07-09 16:12:49 +08:00
Loader类的composer包扫描方法改为public 供命令行调用
This commit is contained in:
@@ -160,65 +160,45 @@ class Loader
|
|||||||
include $file;
|
include $file;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} elseif (AUTO_SCAN_PACKAGE && is_dir(VENDOR_PATH)) {
|
|
||||||
self::scanComposerPackage(VENDOR_PATH);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 扫描composer package
|
// 扫描composer package
|
||||||
private static function scanComposerPackage($path)
|
public static function scanComposerPackage($path)
|
||||||
{
|
{
|
||||||
// 自动扫描下载Composer安装类库
|
// 自动扫描下载Composer安装类库
|
||||||
$dirs = scandir($path, 1);
|
$dirs = scandir($path, 1);
|
||||||
|
$namespace = $files = $classmap = [];
|
||||||
foreach ($dirs as $dir) {
|
foreach ($dirs as $dir) {
|
||||||
if ('.' != $dir && '..' != $dir && is_dir($path . $dir) && is_file($path . $dir . DS . 'composer.json')) {
|
if ('.' != $dir && '..' != $dir && is_dir($path . $dir) && is_file($path . $dir . DS . 'composer.json')) {
|
||||||
// 解析Composer 包
|
// 解析Composer 包
|
||||||
self::parseComposerPackage($path . $dir . DS);
|
$content = file_get_contents($path . $dir . DS . 'composer.json');
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$content = "<?php " . PHP_EOL;
|
|
||||||
if (!empty(self::$load)) {
|
|
||||||
foreach (self::$load as $file) {
|
|
||||||
$content .= 'include \'' . $file . '\';' . PHP_EOL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!empty(self::$namespace)) {
|
|
||||||
$content .= "return " . var_export(self::$namespace, true) . ';' . PHP_EOL;
|
|
||||||
}
|
|
||||||
// 生成缓存
|
|
||||||
file_put_contents(RUNTIME_PATH . 'autoload_composer.php', $content);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 解析Composer Package
|
|
||||||
private static function parseComposerPackage($package)
|
|
||||||
{
|
|
||||||
$content = file_get_contents($package . 'composer.json');
|
|
||||||
$result = json_decode($content, true);
|
$result = json_decode($content, true);
|
||||||
|
|
||||||
if (!empty($result['autoload'])) {
|
if (!empty($result['autoload'])) {
|
||||||
$autoload = $result['autoload'];
|
$autoload = $result['autoload'];
|
||||||
if (isset($autoload['psr-0'])) {
|
if (isset($autoload['psr-0'])) {
|
||||||
foreach ($autoload['psr-0'] as $ns => $path) {
|
foreach ($autoload['psr-0'] as $ns => $path) {
|
||||||
self::$namespace[rtrim($ns, '\\')] = realpath($package . $path . DS . str_replace('\\', DS, $ns)) . DS;
|
$namespace[rtrim($ns, '\\')] = realpath($package . $path . DS . str_replace('\\', DS, $ns)) . DS;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($autoload['psr-4'])) {
|
if (isset($autoload['psr-4'])) {
|
||||||
foreach ($autoload['psr-4'] as $ns => $path) {
|
foreach ($autoload['psr-4'] as $ns => $path) {
|
||||||
self::$namespace[rtrim($ns, '\\')] = realpath($package . $path) . DS;
|
$namespace[rtrim($ns, '\\')] = realpath($package . $path) . DS;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($autoload['files'])) {
|
if (isset($autoload['files'])) {
|
||||||
foreach ($autoload['files'] as $file) {
|
foreach ($autoload['files'] as $file) {
|
||||||
self::$load[] = realpath($package . $file);
|
$files[] = realpath($package . $file);
|
||||||
require $package . $file;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
return ['namespace' => $namespace, 'files' => $files, 'classmap' => $classmap];
|
||||||
|
}
|
||||||
|
|
||||||
// 注册composer自动加载
|
// 注册composer自动加载
|
||||||
private static function registerComposerLoader()
|
private static function registerComposerLoader()
|
||||||
|
|||||||
Reference in New Issue
Block a user