renegare / skip
围绕 silex 框架的简单配置层。旨在通过“绿地”项目减少启动时间。
Requires
- php: >=5.4.0
- seld/jsonlint: 1.1.2
- silex/silex: >=1.0
- symfony/console: >=v2.4.1,<2.5-dev
- symfony/finder: >=2.3,<2.5-dev
- symfony/yaml: ~2.0
Requires (Dev)
- phpunit/phpunit: 3.7.*
- symfony/browser-kit: >=2.3,<2.5-dev
This package is not auto-updated.
Last update: 2024-09-24 02:08:52 UTC
README
什么是 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 目前只支持并配置以下(按相应顺序)
- 提供者
- 设置
- 路由
- 服务
- 配置占位符
待办事项:需要为 skip 添加对特质的额外支持(目前可能,但不够优雅)
欢迎贡献/拉取请求/分支。享受!
支持的 Symfony 控制台配置
控制台应用程序有各种“功能”可以配置,以创建你想要的程序。Skip 目前只支持并配置以下
- 命令
此外,Skip 提供了 ContainerInterface
接口。建议在你的命令中实现此接口,以便你可以在命令中访问 DI 容器(基本上是 Web 应用程序)。
警告:尽可能使您的命令轻量/简洁。#IMO(在我看来)它们应该像控制器一样,所有重型操作(业务/核心逻辑)都实现为服务。这使您的应用程序代码具有可移植性/可重用性/解耦性/可测试性。您的命令在六个月后也会更容易理解 ;)
欢迎贡献/拉取请求/分支。享受!
待办事项(我能想到的)
- 支持其他适当的配置文件类型
- 简单的配置级别缓存机制(例如APC)
- 带有示例的文档(请参阅
test/src/Skip/Test
中的示例)