Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 通过';使用';对象到具有Slim框架的路由_Php_Pdo_Frameworks_Routes_Slim - Fatal编程技术网

Php 通过';使用';对象到具有Slim框架的路由

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 =

我刚刚开始为一个非常基本的RESTAPI项目使用Slim框架,它绝对适合我的需要。但是,我试图确定如何结合使用这两个路由组,并通过“使用”将对象传递给路由

如何将$app实例与其他对象(如$db)一起传递给路由函数?我可以通过使用
$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实例,这是一种很好的替代方法。非常感谢。