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 Biblioteca estableciendo la base: una clase Book simple que servirá como el objeto de dominio principal a lo largo de este capítulo.
Organizarás tu código en dos archivos:
Book.php— Crea una claseBookque represente un libro de la biblioteca. Tu libro debe tener tres propiedades:isbn(string),title(string) yauthor(string). Utiliza la promoción de constructor para mantener tu código limpio. Agrega un método llamadogetInfo()que devuelva una cadena formateada con los detalles del libro en este formato:"[title] by [author] (ISBN: [isbn])"main.php— Incluye el archivo Book y dale vida a 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 esta base agregando usuarios, funcionalidad de préstamo y características administrativas, todo trabajando en conjunto como una aplicación cohesiva.
Pruébalo tú mismo
<?php
require_once 'Book.php';
// Leer la entrada
$isbn = trim(fgets(STDIN));
$title = trim(fgets(STDIN));
$author = trim(fgets(STDIN));
// TODO: Crear una instancia de Book con los valores de entrada
// TODO: Imprimir el resultado de llamar a getInfo()
?>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 personalizada11Sistema de tipos y manejo de errores
Declaraciones de tiposTipos anulablesTipos de unión e intersecciónClases de excepciónJerarquía de excepciones personalizadasTry, Catch, FinallyResumen - Validador de formularios14Proyecto: Gestión de biblioteca
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)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