sábado, 12 de julio de 2025

02 Php POO Clases y Objetos

 2. Clases y Objetos.

Los objetos se crean a partir de clases y las clases vienen a ser como plantillas.

Vamos a crear objetos de tipo persona que van a tener un nombre, apellido, edad, y lo primero que vamos a hacer es construir esa plantilla.

Es muy común que cada vez que creemos una clase, creemos un documento para esa clase, para tener nuestro código mucho más ordenado. Es mejor tener una carpeta donde tengamos nuestras clases.

Para definir una clase hemos de utilizar la palabra reservada class y darle el nombre que le queremos dar a esa clase.

Los objetos tienen propiedades y tienen métodos.
Comenzamos por definir las propiedades.
public $nombre, $apellido, $edad;
Todos los objetos que instanciemos de esta clase tendrán estas propiedades
¿Cómo generamos objetos a partir de nuestra plantilla?
En nuestro archivo que queramos utilizar la clase, debemos importarla.
Hemos de darle una ruta relativa.
require_once("clases/alumno.php");
Definimos una variable e indicar que se trata de una instancia de nuestra clase.
$alumno1 = new alumno;
Hemos generado un objeto que tiene las propiedades de nuestra clase.

Para confirmarlo pedimos que escriba la estructura de este objeto.
var_dump($alumno1);
Esto nos retorna:
object(alumno)#1 (3) { ["nombre"]=> NULL ["apellido"]=> NULL ["edad"]=> NULL }

Para acceder a una de las propiedades el nuestro objeto:
$alumno1 -> nombre = "Juan Manuel";
$alumno1 -> apellido = "Barros Pazos";
$alumno1 -> edad = 50;
var_dump($alumno1);
Esto nos retorna: 
object(alumno)#1 (3) { ["nombre"]=> string(11) "Juan Manuel" ["apellido"]=> string(12) "Barros Pazos" ["edad"]=> int(50) }

Podemos definir otro objeto de la misma forma.
$alumno2 = new alumno;
$alumno2 -> nombre = "Ana Maria";
$alumno2 -> apellido = "Barros Pazos";
$alumno2 -> edad = 47;

Para acceder a una propiedad de un objeto: Nombre del objeto -> Nombre de la propiedad.
echo "<br>Alumno 1 Nombre: ".$alumno1->nombre." ".$alumno1->apellido.". Edad: ".$alumno1->edad.".";
echo "<br>Alumno 2 Nombre: ".$alumno2->nombre." ".$alumno2->apellido.". Edad: ".$alumno2->edad.".";
Al encapsularlo el valor de uno no repercute en el valor del otro.

La clase:

// Definir una clase: Palabra reservada class y nombre.

class alumno{

// Los objetos tienen propiedades y tienen métodos.
// DEFINIR PROPIEDADES.

public $nombre, $apellido, $edad;

// Todos los objetos que instanciemos de esta clase tendrán estas propiedades

// METODOS

// Metodos constructores, se ejecutan al instanciar un objeto.

// Pasamos los parametros al instanciar el objeto.

public function __construct($nombre, $apellido, $edad){

$this->nombre = $nombre;

$this->apellido = $apellido;

$this->edad = $edad;

}

// Si queremos controlar un formato todo en mayusculas.

// Set manipula los valores de nuestras propiedades.

public function setNombre($nombre, $apellido){

$this->nombre = strtolower($nombre);

$this->apellido = strtolower($apellido);

}

// Get controla la forma en que retornamos los datos.

public function getNombre($nombre, $apellido){

$this->nombre = ucwords($nombre);

$this->apellido = ucwords($apellido);

return $this->nombre;

return $this->apellido;

}

} // Fin clase alumno

El archivo php.

// En nuestro archivo que queramos utilizar la clase, debemos importarla.

// Hemos de darle una ruta relativa.

require_once("clases/01Class.php");

 

// Definimos una variable e indicar que se trata de una instancia de nuestra clase.

// Pasamos los parametros al metodo constructor

$alumno1 = new alumno("Juan Manuel", "Barros Pazos", 59);

// Hemos generado un objeto que tiene las propiedades de nuestra clase.

// Para confirmarlo pedimos que escriba la estructura de este objeto.

//var_dump($alumno1);

// Esto nos retorna: object(alumno)#1 (3) { ["nombre"]=> NULL ["apellido"]=> NULL ["edad"]=> NULL }

// Para acceder a una de las propiedades el nuestro objeto:

/*

$alumno1 = new alumno;

$alumno1 -> nombre = "Juan Manuel";

$alumno1 -> apellido = "Barros Pazos";

$alumno1 -> edad = 50;

var_dump($alumno1);

*/

// Esto nos retorna:

//object(alumno)#1 (3) { ["nombre"]=> string(11) "Juan Manuel" ["apellido"]=> string(12) "Barros Pazos" ["edad"]=> int(50) }

 // Podemos definir otro objeto de la misma forma.

$alumno2 = new alumno("Ana Maria", "Barros Pazos", 56);

/*

$alumno2 = new alumno;

$alumno2 -> nombre = "Ana Maria";

$alumno2 -> apellido = "Barros Pazos";

$alumno2 -> edad = 47;

*/

// Para acceder a una propiedad de un objeto: Nombre del objeto -> Nombre de la propiedad.

echo "<br>Alumno 1 Nombre: ".$alumno1->nombre." ".$alumno1->apellido.". Edad: ".$alumno1->edad.".";

echo "<br>Alumno 2 Nombre: ".$alumno2->nombre." ".$alumno2->apellido.". Edad: ".$alumno2->edad.".";

// Al encapsularlo el valor de uno no repercute en el valor del otro.

// Modificamos el formato con la función setNombre pasando dos parametros.

$alumno1 -> setNombre($alumno1->nombre, $alumno1->apellido);

$alumno2 -> setNombre($alumno2->nombre, $alumno2->apellido);

echo "<br>Alumno 1 Nombre: ".$alumno1->nombre." ".$alumno1->apellido.". Edad: ".$alumno1->edad.".";

echo "<br>Alumno 2 Nombre: ".$alumno2->nombre." ".$alumno2->apellido.". Edad: ".$alumno2->edad.".";

// Modificamos el formato con la función getNombre pasando dos parametros.

$alumno1 -> getNombre($alumno1->nombre, $alumno1->apellido);

$alumno2 -> getNombre($alumno2->nombre, $alumno2->apellido);

echo "<br>Alumno 1C Nombre: ".$alumno1->nombre." ".$alumno1->apellido.". Edad: ".$alumno1->edad.".";

echo "<br>Alumno 2C Nombre: ".$alumno2->nombre." ".$alumno2->apellido.". Edad: ".$alumno2->edad.".";

No hay comentarios:

Publicar un comentario

Gracias por vuestros aportes.