eventerza/module-composer-installer

此包已废弃,不再维护。未建议替代包。

安装: 521

依赖: 7

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 0

公开问题: 0

类型:composer-plugin

v1.0.0 2017-07-03 06:29 UTC

This package is not auto-updated.

Last update: 2021-01-28 12:41:03 UTC


README

Build Status Code Coverage Scrutinizer Code Quality

此模块注册了您所有的Slim 3模块,并加载了依赖项。

使用方法

Slim 3项目

将新的composer包添加到您的composer.json文件中

composer require mc388/slim-composer-installer

在Slim 3项目中创建一个App类 src/App.php

<?php

namespace SlimTest;

use Eventerza\ComposerInstaller\Autoloader;

/**
 * Class App initialize the slim app
 * @package App
 */
class App extends \Slim\App
{

    /**
     * App constructor.
     */
    public function __construct()
    {
        parent::__construct([]);
        $this->loadModules();
    }

    /**
     * Load all installed slim-modules
     */
    private function loadModules()
    {
        $autoloader = new Autoloader();

        // Get all modules
        foreach ($autoloader->getModules() as $module) {
            // Iterate over each module namespace
            foreach ($module['namespaces'] as $namespace) {
                // Build class name
                $moduleClass = $namespace . 'App';

                // Instantiate module class
                new $moduleClass($this);
            }
        }
    }
}

public/index.php文件应如下所示

<?php

use SlimTest\App;

session_start();

require __DIR__ . '/../vendor/autoload.php';

$app = new App();
$app->run();

Slim模块

要使用此包,您的Slim 3模块有几个要求。composer包类型为slim-module,并且设置了autoloader/psr-4属性。

以下是composer.json文件的示例

{
  "name": "mc388/slim-test",
  "type": "slim-module",
  "autoload": {
    "psr-4": {
      "Mc388\\SlimTest\\": "src"
    }
  },
  "require": {
    "mc388/slim-composer-installer": "v1.0.0"
  }
}

将所有依赖项放入src/App.php文件中,例如

<?php

namespace Mc388\SlimTestModule;

use Interop\Container\ContainerInterface;
use Slim\App as SlimApp;

class App
{
    /**
     * App constructor.
     * @param SlimApp $app
     */
    public function __construct(SlimApp $app)
    {
        /** @var ContainerInterface $container */
        $container = $app->getContainer();

        $container['view'] = function (ContainerInterface $container) {
            // Init twig
        };

        $app->get('/test', function ($request, $response) {
            return 'Hello World!';
        });
    }
}

安装模块后,应可访问路由/test