php FETCH_CLASS和Eclipse中的自动完成

时间:2012-06-12 15:58:56

标签: php autocomplete pdo eclipse-pdt fetchall

我是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->

自动填充弹出窗口正确显示。

3 个答案:

答案 0 :(得分:1)

我敢打赌,你只需要给Eclipse一个类型提示。我不是Eclipse用户,但您通常使用phpdoc并执行以下操作:

...
$result = $stmt->fetchAll(PDO::FETCH_CLASS, "Articolo");
/** @var $record Articolo */
$record = $result[0];

答案 1 :(得分:0)

假设您的查询成功&返回超过1行,$result包含许多对象。每个对象都是Articolo类型。


要访问对象的方法,您必须执行以下操作:

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

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

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


上述代码的说明:

  1. 获取数据,以便应包含Articolo对象数组。
  2. 遍历每个对象&调用Articolo Class中存在的函数名称。
  3. 您的IDE(Eclipse)无法识别Articolo类中的函数的原因是您尝试从$result 变量调用函数,该变量不属于Articolo类。


    一些堆栈溢出使用提示:

    1. 始终使用右上角的搜索。许多人遇到了可能对你有帮助的问题。
    2. 请务必查看How to Ask Questions FAQ
    3. 反馈&如果需要,请随时提出更多问题!

答案 2 :(得分: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;