Propiedades
Parte de la sección Programación Orientada a Objetos del Journey de PHP de Coddy. Lección 6 de 91.
Las propiedades son variables que pertenecen a una clase. Almacenan información sobre el estado del objeto. En PHP, las propiedades deben declararse dentro de la clase usando una palabra clave de visibilidad como public.
Las propiedades pueden tener valores predeterminados: cada objeto nuevo comienza con el mismo valor inicial, pero cada objeto conserva su propia copia independiente:
<?php
class Student {
public $school = "PHP Academy"; // valor por defecto
public $name;
public $age;
}Las propiedades sin valor predeterminado comienzan como null hasta que las estableces.
Puedes establecer los valores de las propiedades mediante un método y $this:
class Student {
public $school = "PHP Academy";
public $name;
public $age;
public function setInfo($name, $age) {
$this->name = $name; // establecer datos de instancia
$this->age = $age; // establecer datos de instancia
}
}Crea objetos de estudiantes y establece sus datos individuales:
$student1 = new Student();
$student2 = new Student();
$student1->setInfo("Alice", 20);
$student2->setInfo("Bob", 22);Accede a las propiedades:
echo $student1->name . "\n"; // Alice
echo $student2->name . "\n"; // Bob
echo $student1->school . "\n"; // PHP Academy
echo $student2->school . "\n"; // PHP AcademySalida:
Alice
Bob
PHP Academy
PHP AcademyDiferencia clave: las propiedades con valores predeterminados (como $school) comienzan con el mismo valor para cada objeto. Las propiedades establecidas mediante métodos (como $name y $age) son únicas para cada objeto.
Desafío
FácilCompleta la clase Student en student.php:
Declareunaproperty$schoolcon valordefault"PHP Academy"Declarelasproperty$namey$age(sin valores predeterminados)AddunsetInfomethodque acepte los parámetros$namey$agey lossetsusing$this
El archivo driver.php probará tu clase creando dos estudiantes e imprimiendo su información.
Pruébalo tú mismo
<?php
require_once 'student.php';
$student1 = new Student();
$student2 = new Student();
$student1->setInfo("Alice", 20);
$student2->setInfo("Bob", 22);
echo $student1->name . " is " . $student1->age . " at " . $student1->school . "\n";
echo $student2->name . " is " . $student2->age . " at " . $student2->school . "\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