Clases frente a objetos
Parte de la sección Programación Orientada a Objetos del Journey de PHP de Coddy. Lección 3 de 91.
Las clases y los objetos sirven para propósitos diferentes. Una clase es un plano, mientras que un objeto es lo que construyes a partir de ese plano.
Aquí hay un ejemplo de una clase con propiedades declaradas:
<?php
class Dog {
public $name;
public $breed;
}La palabra clave public significa que se puede acceder a estas propiedades desde fuera de la clase. Aprenderemos más sobre public en la lección de Propiedades.
Ahora crea objetos a partir de la clase Dog:
$dog1 = new Dog();
$dog2 = new Dog();Los objetos pueden tener valores individuales para sus propiedades:
$dog1->name = "Nicky";
$dog1->breed = "Siberian Husky";
$dog2->name = "Teemon";
$dog2->breed = "Shu'ali";El operador -> se utiliza para acceder a las propiedades de un objeto.
Imprime los datos de cada objeto:
echo $dog1->name . " is a " . $dog1->breed . "\n";
echo $dog2->name . " is a " . $dog2->breed . "\n";Resultado:
Nicky is a Siberian Husky
Teemon is a Shu'aliDiferencia clave: La clase Dog define la estructura que comparten todos los perros, mientras que los objetos $dog1 y $dog2 representan perros específicos e individuales con valores de propiedad únicos.
Desafío
FácilCompleta el código para crear dos objetos de estudiante a partir de la clase Student y establecer sus propiedades.
student.php: Contiene la claseStudent(bloqueado)driver.php: Crea objetos y establece sus propiedades
Establece los siguientes valores:
$student1: el nombre es"Alice"con la calificación"A"$student2: el nombre es"Bob"con la calificación"B"
Pruébalo tú mismo
<?php
require_once 'student.php';
// TODO: Crear dos objetos de estudiante
// TODO: Establecer propiedades para student1 (nombre: "Alice", calificación: "A")
// TODO: Establecer propiedades para student2 (nombre: "Bob", calificación: "B")
// Imprimir información del estudiante
echo $student1->name . " has grade " . $student1->grade . "\n";
echo $student2->name . " has grade " . $student2->grade . "\n";
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Programación Orientada a Objetos
1Fundamentos de la POO
Archivos externosIntroducción a la POOClases frente a objetosLa palabra clave $thisMétodosPropiedadesConstructor (__construct)Destructor (__destruct)Repaso: calculadora simple4Herencia
Herencia básicaLa palabra clave parent::Sobrescritura de métodosLa palabra clave finalClases abstractasRepaso - Jerarquía de empleados7Encapsulación
Público, protegido, privadoModificadores de acceso en profundidadGetters y settersOcultación de la informaciónPromoción del constructor (8.0)Repaso: sistema de registros de estudiantes10Conceptos avanzados de OOP
Composición vs. herenciaInyección de dependenciasClases anónimasEnums (PHP 8.1)Fibras (PHP 8.1)Análisis profundo de la clonación de objetosGeneradores e iteradores13Patrones de diseño Parte 2
Patrón CommandPatrón AdapterPatrón DecoratorPatrón Template MethodPatrón StatePatrón CompositePatrón Repository2Namespaces y carga automática
Introducción a los NamespacesLa palabra clave useEstándar de carga automática PSR-4Autoloader de ComposerRepaso: proyecto organizado5Interfaces y contratos
Introducción a las interfacesImplementación de interfacesImplementación de múltiples interfacesInterfaces vs. clase abstractaTipado con interfacesRepaso - Calculadora de formas8Métodos mágicos
Introducción a los métodos mágicos__toString y __debugInfo__get, __set, __isset, __unset__call y __callStatic__clone y clonación de objetos__serialize y __unserializeRepaso: colección personalizada3Propiedades de clase
Propiedades de instancia vs. estáticasConstantes en clasesMétodos y propiedades estáticosPropiedades privadas y protegidasPropiedades de solo lectura (PHP 8.1)Repaso: gestor de cuentas bancarias6Polimorfismo
Repaso de la sobrescritura de métodosPolimorfismo mediante interfacesAnotaciones de tipo y tipos uniónEnlace estático tardíoRepaso: procesador de pagos9Traits
Introducción a los TraitsUso de múltiples TraitsResolución de conflictos entre TraitsMétodos abstractos en TraitsTraits frente a la herencia12Patrones de diseño, parte 1
Introducción a los patrones de diseñoPatrón SingletonPatrón FactoryPatrón ObserverPatrón StrategyPractica por tu cuenta: Compilador de PHP online