2012-06-12 53 views
0

我是PHP和PDO的新手。我正在使用Eclipse PDT。php FETCH_CLASS和Eclipse中的自动完成

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

之后,我希望能够键入:

$result[0]-> 

,并从那里按Ctrl +空格Eclipse应当与该类Articolo的所有成员和职能弹出自动完成。

但没有任何反应,就好像IDE不知道$结果类。 我做错了什么? 也许需要铸造$结果(Articolo)?

做:

$var = new Articolo() 
$var-> 

自动完成弹出正确显示。

回答

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; 
0

假设您的查询成功&返回多于1行,$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类中的函数的原因是因为您试图调用$result变量的函数,该函数不属于Articolo类的类型。


一些堆栈溢出使用技巧:

  1. 始终使用在右上角的搜索。许多人遇到可能会帮助你的问题。
  2. 总是看看How to Ask Questions FAQ
  3. 反馈&如果需要,总是会问更多的问题!
+0

感谢您的建议,但Eclipse始终没有弹出对象的自动完成。 –

1

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

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