使用 Slim Framework 将 'use' 个对象传递给路由
Pass 'use' objects to Routes with Slim Framework
我刚刚开始将 Slim Framework 用于一个非常基本的 REST API 项目,它绝对可以满足我的需求。但是,我正在尝试确定如何结合使用两个路由组以及通过 'use'.
将对象传递给路由
如何将 $app 实例与其他对象(例如 $db)一起传递给我的路由函数?我可以通过使用 $app = \Slim\Slim::getInstance();
在函数中获取 $app 来规避这个问题,但也需要传递一个数据库对象。为了取得进步,我目前只是在 GLOBAL 变量中使用它,但如果可能的话,我想找到一个合适的方法。
// create new Slim instance
$app = new \Slim\Slim();
$app->contentType('application/json');
$app->group('/core', function() use($app)
{
$app->group('/device', function() use($app)
{
$app->get( '/getId/:id', 'getDeviceID' );
});
});
function getDeviceID($id)
{
$app->response->headers->set('Content-Type', 'application/json');
}
我通常使用全局变量。我认为这是最简单的方法。
但是您可以简单地将它注入到您的 $app
实例中:
$app->db = new YourAmazingDb();
然后使用它:
function getDeviceID($id)
{
$device = $app->db->getDevice($id);
//More business here with $device
$app->response->headers->set('Content-Type', 'application/json');
}
我刚刚开始将 Slim Framework 用于一个非常基本的 REST API 项目,它绝对可以满足我的需求。但是,我正在尝试确定如何结合使用两个路由组以及通过 'use'.
将对象传递给路由如何将 $app 实例与其他对象(例如 $db)一起传递给我的路由函数?我可以通过使用 $app = \Slim\Slim::getInstance();
在函数中获取 $app 来规避这个问题,但也需要传递一个数据库对象。为了取得进步,我目前只是在 GLOBAL 变量中使用它,但如果可能的话,我想找到一个合适的方法。
// create new Slim instance
$app = new \Slim\Slim();
$app->contentType('application/json');
$app->group('/core', function() use($app)
{
$app->group('/device', function() use($app)
{
$app->get( '/getId/:id', 'getDeviceID' );
});
});
function getDeviceID($id)
{
$app->response->headers->set('Content-Type', 'application/json');
}
我通常使用全局变量。我认为这是最简单的方法。
但是您可以简单地将它注入到您的 $app
实例中:
$app->db = new YourAmazingDb();
然后使用它:
function getDeviceID($id)
{
$device = $app->db->getDevice($id);
//More business here with $device
$app->response->headers->set('Content-Type', 'application/json');
}