0

PHPとPDOは初めてです。私はEclipse PDTを使用しています。

$stmt = $pdo->prepare("SELECT * from articolo");
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_CLASS, "Articolo");

その後、次のように入力できるようにしたい:

$result[0]->

そこから ctrl+space を押すと、Eclipse はそのクラス Articolo のすべてのメンバーと関数を含むオートコンプリートをポップアップするはずです。

しかし、IDE が $result のクラスを認識していないかのように、何も起こりません。私は何か間違ったことをしていますか?(Articolo) への $result のキャストが必要なのでしょうか?

やっている:

$var = new Articolo()
$var->

オートコンプリート ポップアップが正しく表示されます。

4

3 に答える 3

1

Eclipse に型のヒントを与えるだけでよいと思います。私は Eclipse ユーザーではありませんが、通常は phpdoc を使用して、次のようなことを行います。

...
$result = $stmt->fetchAll(PDO::FETCH_CLASS, "Articolo");
/** @var $record Articolo */
$record = $result[0];
于 2012-06-13T22:06:47.813 に答える
0

私は解決策を見つけました:

$articolo = new Articolo();
$stmt = $pdo->prepare("SELECT * from articolo");
$stmt->setFetchMode(PDO::FETCH_INTO, $articolo);
$stmt->execute();           

while ($stmt->fetch()) {
    $articoli[] = clone $articolo;
}           
return $articoli;
于 2012-06-12T22:53:57.690 に答える
0

クエリが成功し、複数の行が返されたと仮定すると、$result多数のオブジェクトが含まれています。各オブジェクトのタイプは になりますArticolo


オブジェクトのメソッドにアクセスするには、次のことを行う必要があります。

$result = $stmt->fetchAll(PDO::FETCH_CLASS, "Articolo");

foreach($result as $object)
{
    // call a method on each object
    $object->someFunction();
} 


上記のコードの説明:

  1. $result Articolo オブジェクトの配列を含むデータを取得します。
  2. 各オブジェクトをループし、Articolo クラスに存在する関数名を呼び出します。

IDE (Eclipse) が Articolo クラスの関数を認識しなかったのは、Articolo クラス$resultの型ではない変数から関数を呼び出そうとしたためです。


スタック オーバーフローの使用に関するヒント:

  1. 常に右上隅の検索を使用してください。多くの人があなたを助けるかもしれない問題に遭遇しました。
  2. 質問の仕方に関するよくある質問を常にご覧ください。
  3. フィードバック & 必要に応じてさらに質問してください!
于 2012-06-12T20:23:34.953 に答える