¿Qué es la programación orientada a objetos en PHP?
La programación orientada a objetos (POO) es una técnica fundamental en el desarrollo de software que permite crear aplicaciones organizadas y mantenibles. En PHP, esta metodología toma el concepto de clase como un molde del cual se derivan objetos, cada uno con su propio estado y comportamiento. Por ejemplo, si tienes una clase Usuario, puedes crear múltiples usuarios, cada uno con sus atributos únicos. Aunque los términos herencia, modularidad, abstracción y polimorfismo pueden sonar complicados, se entrelazan de manera que permiten modularizar, reutilizar y extender el código de manera eficaz.
¿Cómo se definen clases y objetos en PHP?
Definir clases y objetos en PHP es relativamente sencillo. Para crear una clase, se utiliza la palabra reservada class, seguida del nombre de la clase y llaves {} que contienen sus métodos y propiedades:
classPersona{functionsaludar(){return"Hola";}}
Para instanciar un objeto a partir de esta clase, utilizamos el operador new:
$usuario=newPersona();
Esto crea un objeto usuario de tipo Persona.
¿Qué son los métodos y cómo se aplican?
Los métodos son funciones definidas dentro de una clase y describen las acciones que pueden realizar sus objetos. En el código ejemplificado, el método saludar es un comportamiento de la clase Persona:
classPersona{functionsaludar(){return"Hola";}}
Puedes llamar a este método desde un objeto de la clase:
echo$usuario->saludar();// Imprime "Hola"
¿Cómo funciona la herencia en PHP?
La herencia permite que una clase (clase hija) herede propiedades y métodos de otra (clase padre), facilitando la creación de estructuras más complejas y reutilizables. En el ejemplo, Administrador extiende de Persona:
Aquí, Administrador hereda el método saludar de Persona.
¿Cómo organizar código en PHP usando POO?
Organizar el código separando las clases en diferentes archivos es una práctica recomendada para mejorar la legibilidad y mantenimiento del proyecto. Cada clase debería tener su propio archivo. Por ejemplo, podríamos tener persona.php, usuario.php y administrador.php, y en index.php incluirlos de la siguiente manera:
Este enfoque facilita la actualización de componentes individuales sin afectar el resto del sistema.
¿Por qué usar POO en PHP?
La POO permite crear aplicaciones más organizadas y sostenibles, en las que cada objeto puede operar de forma independiente. Esta técnica ayuda a reducir errores, facilita el mantenimiento y optimiza el desarrollo colaborativo al segmentar el código en módulos más manejables. Te invito a practicar creando un archivo por cada clase, como se explicó, lo que te ayudará a entender mejor sus beneficios. Continúa explorando este apasionante mundo de la programación, donde cada línea de código es un paso hacia un sistema más robusto y eficiente.
Como observación... el orden de los include afecta .. ya que si ponemos de la siguiente forma, marcara un Fatal Error, quiero pensar que es porque lee primero la clase admin sin tener person y user antes
<?php
include './clases/admin.php';include './clases/person.php';include './clases/user.php';$user =newUser;$user->type =newAdmin;echo $user->type->greet();```
Gracias por esta observación.
La razon es "obvia" y es el objeto "padre" tiene que ir hasta arriba en este caso que se muestra , estamos llamando al hijo antes que al padre y es no es logico es como
decir yo soy el PAPA de mi PAPA
Como adelanto, para los que se asusten al leer "extends" y digan "¿QUÉ ES ESTO? ¿WTF? ¿COMO QUE EXTENDS?"
Hace referencia a una cosa muy bonita de la Programación Orientada a Objetos que se llama "Herencia" que, of course, se explica más adelante en este curso :3
👍
Eso tambine se ve en el curso de Programación Orientada a Objetos de Anahí
Introducción a clases y objetos
La clase es el molde con el cual crearemos nuestros objetos. Para crear una clase y después un objeto lo hacemos así:
Hola, tus apuntes me han servido, gracias. Aquí te hago la observación de que el nombre de los archivos que contienen una clase, por estándar deben comenzar con mayúscula, por ejemplo: User.php, Person.php, etc.
Saludos.
También a la clase Admin le debes de agregar el include_once('Person.php')
ya que Admin extiende de dicha clase y quitar ese include_once('Person.php') a index.php
;)
😵¿Qué es la Poo?
La Poo es una paradigma que nos permite mapear objetos reales al mundo digital. 🚀
🤔¿Qué es una clase?
Una clase es una un "Molde" para crear objetos, la cual esta compuesta por atributos y métodos. 😯
🔳¿Qué es un objeto?
Son entidades que tienen un determinado estado, comportamiento e identidad.😎
Es el resultado de la instancia de una clase.
😧¿A que se refieren con instancia?
Se refiere a la actividad de crear un objeto mediante la lectura, recuperación de los atributos de una clase.🤩
super resumen! gracias...🙌
index.php
<?php
include './clases/person.php';include './clases/user.php';include './clases/admin.php';$user =newUser;$user->type =newAdmin;echo $user->type->greet();
Cuando divides el código en varios archivos, ya no necesitas incluir Person.php en el principal. Porque Admin.php se encarga de tomar los datos de Person.php.
Aquí el código:
.
INDEX.PHP
<?php
include 'User.php';include 'Admin.php';//creo un objeto de tipo USER$Usuario =newUser;//uso una variables propias de User y le asigno un objeto ADMIN$Usuario->type =newAdmin;//mando a pantalla la funcion greep que viene de Admin y Admin la toma de Personecho $Usuario->type->greep();
<?php
// include 'User.php';// include 'Admin.php';classUser{public $type;}
ADMIN.PHP
<?php
include 'Person.php';classAdminextendsPerson{public $name ="Administrador";}
Gracias por el dato, incluí Person.php y me daba error.
Muchas gracias, me solucionaste el error
🎯 La palabra reservada class nos permite declarar una clase. Por otro lado extends hace referencia a la herencia.
Sigo desde hace tiempo a Italo y en ningun curso puede faltar el clasico ejemplo del blog y los post xD Que buen profe :)
No entiendo porque se pone el $this, ¿A qué se refiere que hace referencia?
¡Hola! Como en cualquier lenguaje de programación, $this hace referencia a "este objeto", o a "esta clase", es decir, con $this puedes acceder a cualquier método o propiedad de esa misma clase donde lo estás usando.
La programación orientada a objetos (POO) en PHP se centra en la creación de clases y objetos. Una clase es un molde que define atributos y métodos, y un objeto es una instancia de esa clase. Por ejemplo, al crear una clase "Persona", puedes generar múltiples objetos "Persona" con diferentes valores. Los conceptos clave incluyen:
Herencia: Permite crear una clase que hereda propiedades y métodos de otra.
Polimorfismo: Permite que diferentes clases usen el mismo método, pero con comportamientos distintos.
Modularidad: Facilita el mantenimiento y organización del código.
Estos principios son fundamentales para estructurar un código limpio y eficiente en PHP.
Tengo una duda, estas clases debemos separarla en una carpeta para diferencia de archivos que no contienen clases? Y al hacerlo asi no se crean muchisimos archivos?
Se puede poner a la clase User también extends?
class User extends Person
{
public $type;
}
User es también hijo de Person
claro que se puede. Pero que en este caso solo nos mostraba como trabajar con los atributos y metodos de diferentes clases.