PDO PHP 获取类

新手上路,请多包涵

我正在学习 php 中的 pdo,以便使数据库访问更容易和更有效。我读过的 fetch _class 的一个解释是,对象的属性是在调用构造函数之前设置的。这是什么意思?非常感谢任何方向。

原文由 Aditya Shukla 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 557
2 个回答

这意味着当使用 PDO 将结果返回到自定义对象时,您需要设置与查询结果键对应的成员变量。

如:

 class User
{
    //Predefine Here
    public $id;
    public $username;
    public $password;
    public $email;
    public $hash;

    public function profileLink()
    {
         return sprintf('<a href="/profile/%s">%s</a>',$this->id,$this->username);
    }
}

$result = $sth->fetchAll(PDO::FETCH_CLASS, "User");
foreach($result as $user)
{
    echo $user->profileLink();
}

这样,PDO 可以将变量设置为其内部范围之外的对象。

如果您的用户类是这样的:

 class User
{
}

那么 PDO 将无法从范围之外设置值,因为没有定义属性。

原文由 RobertPitt 发布,翻译遵循 CC BY-SA 4.0 许可协议

而不是使用: FetchAll(PDO::FETCH_CLASS, 'classname') 您可以使用: fetchObject('classname')

例子:

 class Car extends DatabaseTable {

const TABLE_NAME = 'cars';

// Table Columns
private $color;
private $brand;
private $type;

public function __construct($pdo, $id = false)
{
    parent::__construct($pdo, TABLE_NAME, $id);
}

public static function getAll($pdo, $order = 'id') {
    $query =   'SELECT * FROM ' . self::TABLE_NAME . '
                ORDER BY ' . $order;

    $statement = $pdo->prepare($query);

    $objects = [];
    while ($obj = $statement->fetchObject(self::class, [$pdo])) {
        $objects[$obj->getId()] = $obj;
    }
    return $objects;
}

父构造函数只设置它的 3 个属性,例如: $this->id = $id;

原文由 Halfacht 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏