Clases vs 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"
Hoja de referencia
Una clase es un plano que define la estructura y el comportamiento de los objetos, mientras que un objeto es una instancia creada a partir de esa clase.
Define una clase con propiedades utilizando la palabra clave public:
<?php
class Dog {
public $name;
public $breed;
}Crea objetos a partir de una clase utilizando la palabra clave new:
$dog1 = new Dog();
$dog2 = new Dog();Accede y establece las propiedades de un objeto utilizando el operador ->:
$dog1->name = "Nicky";
$dog1->breed = "Siberian Husky";
$dog2->name = "Teemon";
$dog2->breed = "Shu'ali";Accede a las propiedades para leer sus valores:
echo $dog1->name . " is a " . $dog1->breed;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 OOP
Archivos externosIntroducción a OOPClases vs ObjetosLa palabra clave $thisMétodosPropiedadesConstructor (__construct)Destructor (__destruct)Resumen - Calculadora simple4Herencia
Herencia básicaLa palabra clave parent::Sobrescritura de métodosLa palabra clave finalClases abstractasResumen - Jerarquía de empleados7Encapsulamiento
Público, Protegido, PrivadoModificadores de acceso a fondoGetters y SettersOcultamiento de informaciónPromoción de constructor (8.0)Resumen - Sistema de registros de estudiantes10Conceptos avanzados de POO
Composición vs. HerenciaInyección de dependenciasClases anónimasEnums (PHP 8.1)Fibers (PHP 8.1)Clonación de objetos a fondoGeneradores e Iteradores13Patrones de diseño Parte 2
Patrón CommandPatrón AdapterPatrón DecoratorPatrón Template MethodPatrón StatePatrón CompositePatrón Repository2Espacios de nombres y Autoloading
Introducción a los espacios de nombresLa palabra clave useEstándar de Autoloading PSR-4Autoloader de ComposerResumen - Proyecto organizado5Interfaces y Contratos
Introducción a las InterfacesImplementación de InterfacesImplementación de Múltiples InterfacesInterfaz vs Clase AbstractaType Hinting con InterfacesResumen - 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 __unserializeResumen - 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)Resumen - Gestor de cuenta bancaria6Polimorfismo
Sobrescritura de métodos revisadaPolimorfismo mediante interfacesType Hinting y tipos de uniónEnlace estático tardíoResumen - Procesador de pagos9Traits
Introducción a los TraitsUso de múltiples TraitsResolución de conflictos de TraitsMétodos abstractos en TraitsTraits frente a herencia12Patrones de diseño Parte 1
Introducción a los patrones de diseñoPatrón SingletonPatrón FactoryPatrón ObserverPatrón Strategy