shadowprince/slimext

Slim 微框架的插件,增加组件和路由前缀支持

0.1.5 2013-11-17 12:11 UTC

This package is not auto-updated.

Last update: 2024-09-23 14:18:27 UTC


README

SlimExt - 对 slim 的 monkeypatched 扩展,增加了嵌套路由(易于 URL 前缀添加和中间件添加)以及组件支持(非 symfony)的功能。

路由 URL 前缀

$app->prefix("/uac", function () use ($app) {
    // Route registered as /uac/login
    $app->get("/login", function () use ($app) {
        $app->render("login", array());
    });
});

或者甚至

$app->prefix("/uac", Middleware::userLogged(), function () use ($app) {
    $app->prefix("/edit", function () use ($app) {
        $app->map("/avatar", function () use ($app) {});
        $app->map("/info", function () use ($app) {});
        $app->prefix("/photos", Middleware::userCanManagePhotos(), function () use ($app) {
            $app->map("/upload", function () use ($app) {});
            $app->map("/delete/:id", function ($id) use ($app) {});
            $app->map("/edit/:id", function ($id) use ($app) {});
        });
    });
});

中间件

$app->prefix("/admin", Midleware::userAdmin(), function () use ($app) {
    // Routes registered with Middleware::userAdmin() middleware
    $app->get("/", function () use ($app) {/* ... */});
    $app->get("/users", function () use ($app) {/* ... */});
});

组件

// Uac/urls.php
$app->prefix("/uac", function () use ($app) {
    $app->map("/login", function () use ($app) {
        // ...
    });
});
// bootstrap
$app->config("comps", array("Uac"));
$app->loadComponents();

已注册并准备就绪的路由 /uac/login/。

另一个示例 - 与 autoparis 的集成。您可以从 $app->config("comps") 自动抓取所有模型(分离到组件中)。

服务

服务 - 用于向 $app 添加新功能的实例

class MyApp extends \SlimExt\SlimExt {
    public function user() {
        return $this->user_service_instance;
    }
}

class UserService extends \SlimExt\SlimService {
    public function __construct($app) {
        $this->defaultConfig($app, array(
            "default config" => "can be here"
        ));
    }

    public function isLogged() {
        // ...
    }
}