Menu
Coddy logo textTech

Resumen - Proyecto organizado

Parte de la sección Programación Orientada a Objetos del Journey de PHP de Coddy — lección 14 de 91.

challenge icon

Desafío

Fácil

Vamos a construir una aplicación de blog completa con una organización adecuada de espacios de nombres, reuniendo todo lo que has aprendido sobre namespaces, la palabra clave use y la carga automática PSR-4.

Crearás un proyecto bien estructurado con cinco archivos que demuestran cómo las aplicaciones PHP reales organizan su código:

  • src/Models/Author.php — Define una clase Author en el espacio de nombres Blog\Models. Debe tener una propiedad public $name, un constructor que acepte y establezca el nombre, y un método getBio() que devuelva "Author: [name]".
  • src/Models/Post.php — Define una clase Post en el espacio de nombres Blog\Models. Debe tener las propiedades public $title y public $author (donde author es un objeto Author). El constructor acepta un título y un objeto Author, estableciendo ambos. Añade un método getSummary() que devuelva "[title] by [author name]".
  • src/Services/Publisher.php — Define una clase Publisher en el espacio de nombres Blog\Services. Debe tener un método publish(Post $post) que acepte un objeto Post y devuelva "Published: [post title]". Necesitarás importar la clase Post usando la palabra clave use ya que está en un espacio de nombres diferente.
  • vendor/autoload.php — Crea un cargador automático PSR-4 usando spl_autoload_register que mapee el prefijo de espacio de nombres Blog\ al directorio src/. Este cargador automático único se encarga de cargar todas tus clases automáticamente.
  • index.php — Tu punto de entrada. Requiere el cargador automático, luego usa la palabra clave use para importar Blog\Models\Author, Blog\Models\Post y Blog\Services\Publisher. Crea un Author llamado "Jane Smith", un Post con el título "Getting Started with PHP" usando ese autor, y un Publisher. Imprime la biografía del autor, el resumen de la publicación y el resultado de publicar el post (cada uno en su propia línea).

Observa cómo el servicio Publisher depende del modelo Post; esto demuestra cómo las clases en diferentes espacios de nombres pueden trabajar juntas importando lo que necesitan con sentencias use.

Pruébalo tú mismo

<?php
// Requerir el autoloader
require_once 'vendor/autoload.php';

// TODO: Importar las clases necesarias utilizando sentencias 'use'
// - Blog\Models\Author
// - Blog\Models\Post
// - Blog\Services\Publisher

// TODO: Crear un Autor llamado "Jane Smith"

// TODO: Crear una Publicación con el título "Getting Started with PHP" usando ese autor

// TODO: Crear un Publicador

// TODO: Imprimir la biografía del autor

// TODO: Imprimir el resumen de la publicación

// TODO: Imprimir el resultado de publicar la publicación
?>

Todas las lecciones de Programación Orientada a Objetos