2012-06-12 3 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 + Space Eclipse, должны всплывать на автозаполнения со всеми членами и функций этого класса Articolo.

Но ничего не происходит, как если бы IDE не знала класс $ result. Я что-то не так? Может быть, притяжение $ result to (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. Fetch данные, так что $result должен содержать массив объектов Articolo.
  2. Цикл через каждый объект & вызовите имя функции, которое существует в классе Articolo.

Причина вашей IDE (Eclipse) не признают функции в Articolo класса потому, что вы пытаетесь вызвать функцию от переменной $result, которая не была типа Articolo класса.


Некоторые Stack советы по использованию переполнения:

  1. Всегда использовать поиск в правом верхнем углу. Многочисленные люди сталкиваются с проблемами, которые могут вам помочь.
  2. Всегда смотрите на How to Ask Questions FAQ
  3. Обратная связь & всегда задавайте дополнительные вопросы при необходимости!
+0

спасибо за совет, но Eclipse, держится не выкатились automplete на объектах. –

1

Держу пари, что вам просто нужно дать затмении тип подсказки.Я не пользователь Затмения, но обычно используют PHPDoc и сделать что-то вдоль линий:

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