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 utilizando una palabra clave de visibilidad como public.
Las propiedades pueden tener valores predeterminados que se comparten entre todos los objetos:
<?php
class Student {
public $school = "PHP Academy"; // valor predeterminado
public $name;
public $age;
}Las propiedades sin un valor predeterminado comienzan como null hasta que las establezcas.
Puedes establecer los valores de las propiedades usando 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 la instancia
$this->age = $age; // establecer datos de la instancia
}
}Crea objetos de estudiante y establece sus datos individuales:
$student1 = new Student();
$student2 = new Student();
$student1->setInfo("Alice", 20);
$student2->setInfo("Bob", 22);Acceder a las propiedades:
echo $student1->name . "\n"; // Alice
echo $student2->name . "\n"; // Bob
echo $student1->school . "\n"; // PHP Academy
echo $student2->school . "\n"; // PHP AcademyResultado:
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 a través de métodos (como $name y $age) son únicas para cada objeto.
Desafío
FácilCompleta la clase Student en student.php:
- Declara una propiedad
$schoolcon el valor por defecto"PHP Academy" - Declara las propiedades
$namey$age(sin valores por defecto) - Añade un método
setInfoque reciba los parámetros$namey$agey los asigne utilizando$this
El archivo driver.php probará tu clase creando dos estudiantes e imprimiendo su información.
Hoja de referencia
Las propiedades son variables que pertenecen a una clase y almacenan información sobre el estado del objeto. Deben declararse dentro de la clase utilizando una palabra clave de visibilidad como public.
Las propiedades pueden tener valores predeterminados compartidos entre todos los objetos:
<?php
class Student {
public $school = "PHP Academy"; // valor predeterminado
public $name;
public $age;
}Las propiedades sin un valor predeterminado comienzan como null hasta que se establecen.
Utilice métodos y $this para establecer los valores de las propiedades:
class Student {
public $school = "PHP Academy";
public $name;
public $age;
public function setInfo($name, $age) {
$this->name = $name;
$this->age = $age;
}
}Cree objetos y establezca datos individuales:
$student1 = new Student();
$student1->setInfo("Alice", 20);
echo $student1->name; // Alice
echo $student1->school; // PHP AcademyLas propiedades con valores predeterminados comienzan igual para cada objeto. Las propiedades establecidas a través de métodos son únicas para cada objeto.
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 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