【问题标题】:Pass 'use' objects to Routes with Slim Framework使用 Slim 框架将“使用”对象传递给路由
【发布时间】:2015-05-22 20:07:01
【问题描述】:

我刚刚开始将 Slim Framework 用于一个非常基本的 REST API 项目,它绝对适合我的需求。但是,我正在尝试确定如何结合使用这两个路由组以及通过“使用”将对象传递给路由。

如何将 $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');
}

【问题讨论】:

    标签: php pdo frameworks routes slim


    【解决方案1】:

    通常我使用全局变量。我认为这是最简单的方法。

    但是您可以简单地将其注入您的 $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 实例,这是一种很好的替代方法。谢谢!
    猜你喜欢
    • 2014-08-27
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 2019-12-15
    • 1970-01-01
    • 1970-01-01
    • 2018-01-05
    • 1970-01-01
    相关资源
    最近更新 更多