0

ID、キーワード、値を持つクラスがあります。Setting という名前のテーブルから Setting を使用してデータをクラス Setting にフェッチしています

if ($stmt->execute()) {
  $o = $stmt->fetchAll(PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE, "Setting", array('id', 'keyword','value'));
}

$o の内容を見ると、次のように表示されます

Array ( [0] => Setting Object ( [id] => id [keyword] => keyword [value] => value [Id] => 1 [Keyword] => AdminMail [Value] => yahoo@yahoo.com ))

私のクラスは次のようになります

class Setting {
var $id;
var $keyword;
var $value;

function __construct($id,$ke,$va) {
    $this->id = $id;
    $this->keyword = $ke;
    $this->value = $va;
}

public function getKeyword() {
    return $this->keyword;
}

public function getValue() {
    return $this->value;
}
}

$o->getValue は yahoo@yahoo.com を返すと思いますが、値を返します。

テーブルからの実際の出力の前に「[id] => id [keyword] => keyword [value] => value」が表示される理由を教えてもらえますか?

4

1 に答える 1

0

このトリッキーなシンタックス シュガーがなぜ魅力的なのか、私にはわかりません。
次のようなプレーンでシンプルで読みやすいコードよりも優れています。

function __construct($init) {
    $this->id      = $init['id'];
    $this->keyword = $init['ke'];
    $this->value   = $init['va'];
}
...
$stmt->execute();
$o = new Settings($stmt->fetchAll());
于 2013-10-13T16:50:10.143 に答える