php FETCH_CLASS y autocompletar en Eclipse

Soy nuevo en PHP y PDO. Estoy trabajando con Eclipse PDT.

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

Después de eso, quiero poder escribir:

$result[0]->

y desde allí, al presionar ctrl+espacio, Eclipse debería mostrar el autocompletado con todos los miembros y funciones de esa clase Articolo.

Pero no pasa nada, como si el IDE no supiera la Clase de $resultado. ¿Estoy haciendo algo mal? ¿Tal vez se necesita un elenco de $resultado para (Articolo)?

haciendo:

$var = new Articolo()
$var->

la ventana emergente de autocompletar aparece correctamente.

preguntado el 12 de junio de 12 a las 16:06

3 Respuestas

Apuesto a que solo necesitas darle a Eclipse una pista de tipo. No soy un usuario de Eclipse, pero normalmente usa phpdoc y hace algo como:

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

Respondido el 13 de junio de 12 a las 23:06

Suponiendo que su consulta fue exitosa y devolvió más de 1 fila, $result contiene numerosos objetos. Cada objeto será de tipo Articolo.


Para acceder a los métodos del objeto, deberá hacer lo siguiente:

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

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


Explicación del código anterior:

  1. Obtener los datos, de modo que $result debe contener una matriz de objetos Articolo.
  2. Recorre cada objeto y llama a un nombre de función que existe en la clase Articolo.

La razón por la que su IDE (Eclipse) no reconoció las funciones en la Clase Articolo fue porque estaba tratando de llamar a una función desde el $result variable, que no era del tipo Articolo Class.


Algunos consejos de uso de desbordamiento de pila:

  1. Utilice siempre la búsqueda en la esquina superior derecha. Numerosas personas se han encontrado con problemas que pueden ayudarlo.
  2. Siempre echa un vistazo a la Preguntas frecuentes sobre cómo hacer preguntas
  3. ¡Comentarios y siempre haga más preguntas si es necesario!

contestado el 23 de mayo de 17 a las 12:05

gracias por el consejo, pero Eclipse sigue sin mostrar el autocompletado en los objetos. - simone conti

Encontré una solución:

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

Respondido el 12 de junio de 12 a las 23:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.