Descripción general del proyecto
Parte de la sección Programación Orientada a Objetos del Journey de PHP de Coddy. Lección 82 de 91.
Desafío
FácilComencemos el proyecto del Sistema de gestión de bibliotecas configurando los cimientos: una clase Book sencilla que servirá como objeto central del dominio a lo largo de este capítulo.
Organizarás tu código en dos archivos:
Book.php: Crea una claseBookque represente un libro de biblioteca. Tu libro debe tener tres propiedades:isbn(cadena),title(cadena) yauthor(cadena). Usa la promoción de constructor para mantener tu código limpio. Añade un método llamadogetInfo()que devuelva una cadena con formato que contenga los detalles del libro en este formato:"[title] by [author] (ISBN: [isbn])"main.php: Incluye el archivo de Book y pon en funcionamiento tu clase. Recibirás tres entradas: el ISBN, el título y el autor de un libro. Crea una instancia deBookcon estos valores e imprime el resultado de llamar agetInfo().
Este es el primer bloque de construcción de tu sistema de biblioteca. En las próximas lecciones, ampliarás estos cimientos añadiendo usuarios, funcionalidad de préstamos y funciones administrativas: todo trabajando conjuntamente como una aplicación cohesiva.
Pruébalo tú mismo
<?php
require_once 'Book.php';
// Leer entrada
$isbn = trim(fgets(STDIN));
$title = trim(fgets(STDIN));
$author = trim(fgets(STDIN));
// TODO: Crea una instancia de Book con los valores de entrada
// TODO: Imprime el resultado de llamar a getInfo()
?>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 personalizada11Sistema de tipos y manejo de errores
Declaraciones de tiposTipos anulablesTipos unión e intersecciónClases de excepcionesJerarquía de excepciones personalizadaTry, Catch, FinallyRepaso: validador de formularios14Proyecto: Gestión de Bibliotecas
Descripción general del proyectoClases de libros y usuarios3Propiedades 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