【发布时间】:2018-01-21 21:49:49
【问题描述】:
我刚刚学习了 slim 3,我想将我的 slim 2 项目转换为 slim 3,但卡在了 PHP 函数中,尤其是带有参数。我不知道如何创建带参数的函数以及如何传递它。
例如,我有一个重要的功能来获取我的用户详细信息,我不知道如何转换为 Slim 3。
谢谢
function internalUserDetails($input) {
try {
$db = getDB(); //when convert to slim 3, I declared the DB in dependencies so I have to call the DB with '$this->db'
$sql = "SELECT user_id, name, email, username FROM users WHERE username=:input or email=:input";
$stmt = $db->prepare($sql);
$stmt->bindParam("input", $input,PDO::PARAM_STR);
$stmt->execute();
$usernameDetails = $stmt->fetch(PDO::FETCH_OBJ);
$usernameDetails->token = apiToken($usernameDetails->user_id);
$db = null;
return $usernameDetails;
} catch(PDOException $e) {
echo '{"error":{"text":'. $e->getMessage() .'}}';
}
}
这是数据库依赖代码
$container['db'] = function ($c) {
$db = $c['settings']['db'];
$pdo = new PDO('mysql:host=' . $db['host'] . ';dbname=' . $db['dbname'],
$db['user'], $db['pass']);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
return $pdo;
};
运行时出现错误
不在对象上下文中使用 $this
【问题讨论】:
-
当我使用 $this '不在对象上下文中使用 $this'
-
我在上面的代码中没有看到任何
$this? -
在 slim 3 中,我的 getDB() 函数将被放入“依赖项”中,我应该使用 $this->db; 调用
-
请添加您遇到问题并显示错误消息的代码。
-
我已经添加了 slim 3 依赖项