如何在一个不是Slim 3中的类的php文件中使用依赖容器

时间:2017-08-29 15:10:19

标签: php dependency-injection slim pimple

我的数据库有这个依赖容器。

$container['db'] = function ($container) {
    $db = $container['settings']['db'];
    $conn = db2_connect($db['database'], $db['username'], $db['password']);
    return $conn;
};

我可以在我的控制器中使用它,如$conn = $this->db;来查询我的数据库并返回一个数组。

我正在尝试执行ajax调用以在视图中使用数据表。当我为我的ajax调用创建一个页面时,它只是一个php文件。不是一个班级。如何在这个php文件中使用db容器?

这是php文件。

if ($conn) {
    $sql = "SELECT trannum, 
                   trantype, 
                   tranbatch, 
                   trandate, 
                   username, 
                   trvnum, 
                   tranaccount, 
                   tranamt, 
                   transtatus, 
                   trannumdocs 
            FROM   BD.BDPTV 
                   INNER JOIN BD.BDUSERS 
                           ON BD.BDUSERS.usernumber = BD.BDPTV.tranuser 
            WHERE  transtatus NOT IN ( 3, 7, 5 )";

    $stmt = db2_prepare($conn, $sql);

    if ($stmt) {
        $result = db2_execute($stmt);
        if ($result) {
            while ($row = db2_fetch_array($stmt)) {
                $admin[] = array(
                    'trnum' => $row[0],
                    'trtyp' => $row[1],
                    'trbatch' => $row[2],
                    'trdate' => $row[3],
                    'usrnam' => $row[4],
                    'trvnum' => $row[5],
                    'tracct' => $row[6],
                    'tramt' => $row[7],
                    'trvsts' => $row[8],
                    'numdoc' => $row[9]
                );
            }
        } else {
            error_log(db2_stmt_errormsg($stmt));
        }
    } else {
        error_log(db2_stmt_errormsg($stmt));
    }
} else {
    error_log(db2_conn_errormsg());
}

multiDim($admin);
$admin['data'] = $admin;
echo json_encode($admin);

1 个答案:

答案 0 :(得分:2)

您可以通过2种方式首先访问db - 对象'数组'样式(就像您定义的那样)

$conn = $container['db'];

或通过get - 方法

$conn = $container->get('db');

尽管如此,你应该在Slim中添加一个路由来做到这一点,而不是为此添加额外的PHP文件。这不是Slim的用例。