【发布时间】:2014-02-26 00:36:25
【问题描述】:
我正在尝试为一个类创建一个 fetch 方法;这是一个(可能过度)简化的例子:
<?php
class User {
protected $name;
public function fetch($id) {
global $db;
$sql = "SELECT [name] FROM [user] WHERE [id] = :id";
$ins = array ('id' => $id);
$stmt = $db->prepare($sql);
$stmt->setFetchMode(PDO::FETCH_INTO, $this);
$stmt->execute($ins);
$stmt->fetch();
}
}
现在,如果这可行,那就太好了,但是,当然,它不是 $name 是受保护的属性,因此我得到了错误。
Cannot access protected property User::$name yadda yadda....
所以,我花了一段时间在 Internet 上搜索以尝试找到一种替代方法,虽然我找到了一些可行的建议,但我希望有人能够推荐一种方法。显然我不想公开用户的属性或使用魔法设置器。
【问题讨论】:
-
如果获取成功,您可以使用
stdClass,然后将其中的公共属性复制到您的受保护属性中? -
我已经实施了该答案中的建议。不过我不知道;感觉有点过分了!
-
我同意,但正如答案中所述,PDO 无法访问私有成员,所以我看不到其他方法。
-
我想的差不多;似乎很可惜!感谢 cmets。