PHP - Clase y function contructor

 
Vista:

Clase y function contructor

Publicado por BrutusBox (3 intervenciones) el 23/05/2020 14:22:44
Hola amigos.
Tengo el siguiente problema, espero que me podais ayudar.

Desde el archivo_2.php llamo a una funcion que se encuentra dentro de una clase, con el objetivo de ingresar un nuevo registro en una tabla.

Si copio el contenido de la funcion contructor a la funciona prueba, funciona bien.

Entoces imagino que el problema esta en la funcion constructor pero creo haber entendido que sirve para dar un estado inicial a un objeto.



archivo -> archivo_1.php
----------------------------------------------------------------
1
2
3
4
5
6
7
8
9
10
11
<?php
 
	require 'archivo_2.php';
 
	$ej = new clase();
 
	$nombre = "brutus";
 
	$ejemplo = $ej->prueba($nombre);
 
?>


archivo -> archivo_2.php
----------------------------------------------------------------
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
class clase{
 
	function __construct(){
 
		require_once 'conexion_mysqli.php';
		$conexion = new conexion();
		$conexion_conectar = $conexion->conectar();
 
	}
 
	function prueba($nombre){
 
		$conexion_conectar->query("INSERT ......");
 
	}
}
 
?>

archivo -> conexion_mysqli.php
----------------------------------------------------------------

1
2
3
4
5
6
7
8
9
10
11
12
<?php
 
class conexion{
 
 
	public function conectar(){
 
 
	}
}
 
?>


un saludo
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 Julio
Val: 2.608
Oro
Ha aumentado su posición en 2 puestos en PHP (en relación al último mes)
Gráfica de PHP

Clase y function contructor

Publicado por Julio (761 intervenciones) el 23/05/2020 18:20:09
Hola.

Las variables que defines dentro de una función son del ámbito de esa misma función, por tanto:

1
2
3
4
5
6
7
8
9
class Prueba {
    public function __construct() {
        $variable = 1;
    }
 
    public function getVariable() {
        return $variable;
    }
}

Esto no te funcionará porque $variable se define únicamente en el ámbito de la función __construct en este caso. Por tanto, la variable necesitas crearla en el ámbito de la clase;

1
2
3
4
5
6
7
8
9
10
11
class Prueba {
    private $variable;
 
    public function __construct() {
        $this->variable = 1;
    }
 
    public function getVariable() {
        return $this->variable;
    }
}

Ahora sí, porque estás utilizando la variable definida en el ámbito de la clase. En tu ejemplo, $conexion_conectar no va a estar disponible en el resto de funciones de la clase porque la defines de forma local a la función y no en el ámbito de la clase.

-----------------------------
Aprende la programación desde una perspectiva básica y simplista en Programación Básica
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

Clase y function contructor

Publicado por BrutusBox (3 intervenciones) el 23/05/2020 19:03:05
Hola Julio,
gracias por tu respuesta.

Aplique los cambios que me dijiste y creo que correctamente porque ahora si funciona. Quizas puedas confirmarme.

Dejo el resultado por si alguien le interesa.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class clase{
 
	private $conexion;
 
	function __construct(){
 
		require_once 'conexion_mysqli.php';
		$this->conexion = new conexion();
		$this->conexion->conectar();
 
	}
 
 
	function prueba($nombre){
 
		$this->conexion->conectar()->query("INSERT ......");
 
 
	}
}


un saludo
gracias
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
Imágen de perfil de Julio
Val: 2.608
Oro
Ha aumentado su posición en 2 puestos en PHP (en relación al último mes)
Gráfica de PHP

Clase y function contructor

Publicado por Julio (761 intervenciones) el 23/05/2020 20:40:50
Exacto, eso es la definición de una clase. Lo que podrías es indicar si las funciones son public, private o protected también.

P.D.: Un detalle, por norma general, en PHP las clases se definen con su primera letra en mayúscula. En tu caso sería Clase y Conexion, pero es norma de nomenclatura, no de funcionamiento. Funcionarte te funcionará igual.

-----------------------------
Aprende la programación desde una perspectiva básica y simplista en Programación Básica
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

Clase y function contructor

Publicado por BrutusBox (3 intervenciones) el 23/05/2020 21:59:31
Genial,
Tomo nota.

Muchas gracias :)
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