Php 通过';使用';对象到具有Slim框架的路由
我刚刚开始为一个非常基本的RESTAPI项目使用Slim框架,它绝对适合我的需要。但是,我试图确定如何结合使用这两个路由组,并通过“使用”将对象传递给路由 如何将$app实例与其他对象(如$db)一起传递给路由函数?我可以通过使用Php 通过';使用';对象到具有Slim框架的路由,php,pdo,frameworks,routes,slim,Php,Pdo,Frameworks,Routes,Slim,我刚刚开始为一个非常基本的RESTAPI项目使用Slim框架,它绝对适合我的需要。但是,我试图确定如何结合使用这两个路由组,并通过“使用”将对象传递给路由 如何将$app实例与其他对象(如$db)一起传递给路由函数?我可以通过使用$app=\Slim\Slim::getInstance()在函数中获取$app来避免这个问题但也需要传递数据库对象。为了进步,我目前只是在一个全局变量中使用它,但如果可能的话,我想找到一个合适的方法 // create new Slim instance $app =
$app=\Slim\Slim::getInstance()在函数中获取$app来避免这个问题代码>但也需要传递数据库对象。为了进步,我目前只是在一个全局变量中使用它,但如果可能的话,我想找到一个合适的方法
// 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');
}
我想在这种情况下我会坚持使用全局变量。我甚至没有想过将其注入$app实例,这是一种很好的替代方法。非常感谢。