PHP - Problema al llamar a funcion dentro de clase (PDO y MVC)

 
Vista:
sin imagen de perfil

Problema al llamar a funcion dentro de clase (PDO y MVC)

Publicado por Michael (3 intervenciones) el 23/04/2018 03:12:00
Hola, soy nuevo en este foro y en realidad vengo en busca de ayuda, ya que no he podido hacer funcionar mi codigo :(

Estoy realizando una pequeña aplicación para practicar el estilo Modelo Vista Controlador.

El problema surge al abrir el archivo index.php, me arroja un error 500 y en el error_log de php dice esto:

[23-Apr-2018 03:14:13 Europe/Berlin] PHP Notice: Undefined variable: con in /Applications/MAMP/htdocs/prueba/modelo/class.consultas.php on line 6
[23-Apr-2018 03:14:13 Europe/Berlin] PHP Fatal error: Uncaught Error: Call to a member function query() on null in /Applications/MAMP/htdocs/prueba/modelo/class.consultas.php:6
Stack trace:
#0 /Applications/MAMP/htdocs/prueba/controlador/cargar.php(4): Consultas->traerProductos()
#1 /Applications/MAMP/htdocs/prueba/index.php(6): cargar()
#2 {main}
thrown in /Applications/MAMP/htdocs/prueba/modelo/class.consultas.php on line 6

He probado con el codigo de la consulta fuera de la función y la clase y funciona perfectamente.

Codigo de archivos:

index.php
1
2
3
4
5
6
7
<?php
require_once 'modelo/conexion.php';
require_once 'modelo/class.consultas.php';
require_once 'controlador/cargar.php';
 
cargar();
?>

modelo/conexion.php

1
2
3
4
5
6
7
<?php
try{
	$con = new PDO('mysql:hostname=localhost;dbname=pedidos','root','root');
}	catch (PDOException $e){
	echo "Error!" . $e->getMessage(). "<br>";
	die();
}

modelo/class.consultas.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
class Consultas{
 
 
    public function traerProductos(){
        $stmt = $con->query("SELECT * FROM productos");
        foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $fila) {
        return $fila;
        }
    }
 
 
}
?>

controlador/cargar.php

1
2
3
4
5
6
7
8
9
<?php
function cargar() {
	$consultas =  new Consultas();
	$rows = $consultas->traerProductos();
	foreach ($rows as $row) {
		echo $row['nombre']."<br>";
	}
}
?>

PD: adjunto fotos del codigo igual.. Saludos y gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Problema al llamar a funcion dentro de clase (PDO y MVC)

Publicado por xve (6935 intervenciones) el 23/04/2018 08:04:41
Hola Michael, el problema es que la clase Consultas, no sabe que es la variable $con, ya que dentro de la clase no esta definida.
Prueba a poner en el constructor de la clase Consultas algo así:
1
global $con;
para que la clase pueda utilizar dicho objeto!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Problema al llamar a funcion dentro de clase (PDO y MVC)

Publicado por Michael (3 intervenciones) el 23/04/2018 08:07:38
Gracias!! ya habia encontrado el error dandome vueltas el código muchas veces y justamente es lo mismo que me dices.

Un abrazo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar