renegare/skip

围绕 silex 框架的简单配置层。旨在通过“绿地”项目减少启动时间。

v0.3.1 2014-08-18 12:31 UTC

This package is not auto-updated.

Last update: 2024-09-24 02:08:52 UTC


README

Build Status 在主分支

Build Status 在开发分支

什么是 Skip?

Skip 是围绕 Silex (PHP 微型框架)Symfony 控制台组件 的配置包装器。

围绕这两个库包装的想法是为需要简单 Web 应用和 CLI 界面的新项目提供一个起点。

然而,目标是“跳过”这些库的手动设置/配置(惊人的工具,但学习曲线令人讨厌),并将所有这些内容放入某个地方的 json 文件中。我希望这能让开发者更好地专注于他们的应用程序开发。

要求

  • PHP 5.4
  • composer(最好是最新版)

安装

推荐的方式是使用 composer 在项目中安装 skip

"require": {
    ...
    "renegare/skip": "master-dev"
    ...
}

注意:你可以要求自己的 silex 版本,只要它大于 composer.json 中定义的最小版本。

测试

检查仓库,并从顶级目录运行以下命令

$ composer update && vendor/bin/phpunit

注意:你需要在你的机器上安装 composer

Web 应用程序使用

传统上,要启动 Silex 应用程序,你会这样做

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

$app = new Silex\Application();

// definitions (that gets overly bloated as your app grows)

$app->run();

现在你可以这样做

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

$configPaths = array(__DIR__ . '/config', __DIR__ . '/dev/config', __DIR__ . '/live/config');

// used to replace 'placeholders' in you configuration (e.g "param1": "#RANDOM_ENV_VAR_1#/goes/here")
$placeholders = array('RANDOM_ENV_VAR_1' => 'something', 'RANDOM_ENV_VAR_2' => '2');
$loader = new Skip\ConfigLoader($configPaths, null, $placeholders);

$app = new Skip\WebApplication();
$app->setConfigLoader($loader);
$app->configure();
$app->run();

上面的示例将在 $configPaths 中设置的目录中找到所有 *.json 文件,并按顺序合并为一个大配置文件。

然后 $app->configure() 将遍历配置并配置你的 $app。

浏览代码以了解可以做什么,因为它是如此简单...没有巨大的学习曲线。希望这能让你快速启动和运行 :)

注意:请查看测试 WebApplicationTest 以获取配置的具体信息。

控制台应用程序使用

创建一个包含以下代码的文件

#!/usr/bin/env php
<?php
require_once __DIR__.'/vendor/autoload.php';

$app = new Skip\ConsoleApplication();
$app->setConfigLoaderCallback(function(Symfony\Component\Console\Input\InputInterface $input, $env, $devUser) {
    $configPaths = array(__DIR__ . '/config', __DIR__ . '/dev/config', __DIR__ . '/live/config');

    $placeholders = array('RANDOM_ENV_VAR_1' => 'something', 'RANDOM_ENV_VAR_2' => '2');
    $loader = new Skip\ConfigLoader($configPaths, null, $placeholders);

    return $loader;
});
$app->run();

确保你的文件是可执行的,并且一切应该按预期工作。

注意:请查看测试 ConsoleApplicationTest 以获取配置的具体信息。

配置文件类型支持

目前,skip 只支持 *.json 文件。我认为它也可以支持 .ini、yml 或甚至 xml!?

支持的 Silex 配置

Silex 应用程序有各种“功能”可以配置,以创建你想要的程序。Skip 目前只支持并配置以下(按相应顺序)

  1. 提供者
  2. 设置
  3. 路由
  4. 服务
  5. 配置占位符

待办事项:需要为 skip 添加对特质的额外支持(目前可能,但不够优雅)

欢迎贡献/拉取请求/分支。享受!

支持的 Symfony 控制台配置

控制台应用程序有各种“功能”可以配置,以创建你想要的程序。Skip 目前只支持并配置以下

  1. 命令

此外,Skip 提供了 ContainerInterface 接口。建议在你的命令中实现此接口,以便你可以在命令中访问 DI 容器(基本上是 Web 应用程序)。

警告:尽可能使您的命令轻量/简洁。#IMO(在我看来)它们应该像控制器一样,所有重型操作(业务/核心逻辑)都实现为服务。这使您的应用程序代码具有可移植性/可重用性/解耦性/可测试性。您的命令在六个月后也会更容易理解 ;)

欢迎贡献/拉取请求/分支。享受!

待办事项(我能想到的)

  • 支持其他适当的配置文件类型
  • 简单的配置级别缓存机制(例如APC)
  • 带有示例的文档(请参阅test/src/Skip/Test中的示例)