4

PDO::FETCH_CLASS事前に入力されたデータを使用してクラスインスタンスを初期化できます。これは次のようになります。

<?php
class Bar {
    private $data = [];

    public function __construct ($is) {
        // $is === 'test'
        // $this->data === ['foo' => 1, 'bar' => 1]
    }

    public function __set($name, $value) {
        $this->data[$name] = $value;
    }
}

$db
    ->query("SELECT `foo`, `bar` FROM `qux`;")
    ->fetchAll(PDO::FETCH_CLASS, 'Bar', ['test']);

PDO::FETCH_PROPS_LATEまたは、セッターがトリガーされる前にコンストラクターを呼び出すために使用することもできます。

コンストラクターが呼び出される前に、PDOがセッターを介してClassインスタンスにデータを入力する方法、より具体的には、この動作を複製する方法があるかどうかを知りたいのですが。

4

2 に答える 2

5

ReflectionClass::newInstanceWithoutConstructorを使用して、PHP 5.4+ でこれを行うことができます。

于 2013-03-04T10:31:42.510 に答える