gerkirill/silex-rad

一组简单易用的Silex服务,用于加速开发

v1.2 2015-04-30 11:04 UTC

This package is not auto-updated.

Last update: 2024-09-28 15:23:48 UTC


README

一组简单易用的Silex服务,以加快开发速度。

Build Status

安装

使用composer

{"require": {"gerkirill/silex-rad": "dev-master"}}

自动服务

将给定目录中所有类注册为服务(非递归)。服务构造函数将接收单个参数 - $app。如果您想向构造函数传递自定义参数,只需使用auto-service使用的名称自己注册服务即可。

$app->register(new \SilexRad\AutoService\Provider\AutoServiceProvider(), array(
    'rad.service.directories' => array(
        __DIR__ . '/../src/Service' => array('namespace' => 'Service')
    )
));

例如,位于Service/MyTestService.php中的Service\MyTestService类可以通过$app['MyTestService']访问。配置键'rad.service.directories'包含关联数组,其中键是服务所在的文件夹路径。值是包含设置的关联数组。可能的设置键包括

  • file_extension - 默认为'.php',您可以将它更改为'.inc',如果您的服务使用该扩展。将跳过其他扩展名的文件。
  • namespace - 您的服务所属的命名空间,例如 "Services" 或 "MyVendor/MyProject/Services"

可以通过设置$app['rad.service_name_converter']和$app['rad.service.registrator']来更改默认行为。您可以在“扩展点”部分找到更多详细信息。

自动路由

自动处理形如'/{"控制器}/{动作}'的路由。需要控制器作为已注册的服务类。{动作}部分是可选的,默认为"index"。

// this built-in service provider is required to use auto-route
$app->register(new Silex\Provider\ServiceControllerServiceProvider());
// here you can use AutoServiceProvider to automatically register controllers as services, or you'll have to do it manually
$app->register(new \SilexRad\AutoRoute\Provider\AutoRouteProvider());

例如,URL my-test/my-example将被MyTest:myExample控制器处理。控制器将使用单个参数 - $request 被调用。URL将匹配GET和POST。如果需要更精确的路由调整,请手动创建路由。

自动模板

根据当前控制器和动作检测twig模板名称。需要控制器作为已注册的服务类。

$app->register(new \SilexRad\AutoTemplate\Provider\AutoTemplateProvider());

在您的控制器中,您现在可以这样做

class MyTestController {
    private $app;
    ...
    public function myExample() {
        return $this->app['rad.template.render'](['hello' => 'world']);
    }    
}

相应的模板将是位于为twig配置的模板目录下的my-test/my-example.twig。

扩展点