anomaly/addon-composer-plugin

此包的最新版本(dev-master)没有可用的许可证信息。

dev-master / 1.0.x-dev 2014-12-09 22:14 UTC

This package is auto-updated.

Last update: 2024-09-13 06:34:10 UTC


README

扫描封装的供应商文件夹以查找其他包,并生成包含包命名空间和源文件夹数组的自动加载文件。然后外部应用程序可以通过在运行时注册命名空间来由多个供应商文件夹提供动力。

需要 "streams/addon-composer": "dev-master",任何其他依赖项,并将以下脚本添加到composer.json中。

composer.json

{
    "require": {
        "streams/addon-composer": "dev-master",
        "league/flysystem" : "dev-master",
        "league/fractal" : "dev-master",
        "league/plates" : "dev-master"
    },
    "scripts": {
        "post-install-cmd": "Streams\\AddonComposer\\Generator::generate",
        "post-update-cmd": "Streams\\AddonComposer\\Generator::generate"
    }
}

生成的 streams.addon.autoload.php

<?php return [
    'psr-4' => [
        'League\\Flysystem\\' => 'league/flysystem/src/',
        'League\\Fractal\\' => 'league/fractal/src',
        'League\\Plates\\' => 'league/plates/src',
    ]
];

主应用程序可以要求 streams.addon.autoload.php 文件并使用Composer类加载器注册命名空间。下面是一个示例。

$loader = new Composer\Autoload\ClassLoader;

// Loop through each addon and register the PSR paths

if (is_file($addon['path'] . '/streams.addon.autoload.php')) {
    $autoload = require $addon['path'] . '/streams.addon.autoload.php';

    if (isset($autoload['psr-0'])) {
        foreach ($autoload['psr-0'] as $namespace => $src) {
            $loader->add($namespace, $vendorFolder.$src));
        }
    }

    if (isset($autoload['psr-4'])) {
        foreach ($autoload['psr-4'] as $namespace => $src) {
            $loader->addPsr4($namespace, $vendorFolder.$src));
        }
    }
}

// Register

$loader->register();