精简框架在路由中共享代码


Slim framework shared code in routes

我有一个包含6条路由的路由组。我根据数据库检查每条路由的参数。

实现这一点的最佳方法是什么?为它建立一个类?

在使用数据库时,这实际上取决于您将使用它的次数。Slim没有数据库集成,因此您可以通过使用基本的php或使用ORM工具来帮助您与数据库对话来访问数据库。

一个快速且易于使用的表单是idiorm http://idiorm.readthedocs.org/en/latest/index.html

还有其他更强大的东西,这完全取决于你想要完成什么。真的,要给出"最佳"解决方案,我们需要更多关于情况的信息,以及你如何量化"最佳"。"

尝试使用Slim Middleware

将您的check部分添加为一个中间件,并为所有路由共享一个中间件。

根据你的需要,你也可以尝试使用类实例作为路由回调。

定义一个具有所有数据库功能的基类,并使用2.4.0版本(2013年11月)以来可用的"类控制器"。

class Base  {
    // Define all your shared DB methods and properties here
}

使用基类的子类作为控制器类实例,作为Slim应用程序路由(及其参数)的回调:

$app->get('/user/:id/', ''Base'User:find');

在回调类实例中获取$app的实例很容易:

class User extends 'Base {
    public function find($theUserId) {
        // ...
        // You can easily get access to $app here, too:
        // $app = 'Slim'Slim::getInstance();
    }
}