Menu
Coddy logo textTech

Repaso: 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

Construyamos una aplicación de blog completa con una organización adecuada de espacios de nombres, reuniendo todo lo que has aprendido sobre los espacios de nombres, 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, y establece 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]". Tendrás que importar la clase Post mediante la palabra clave use, ya que se encuentra en un espacio de nombres diferente.
  • vendor/autoload.php: Crea un cargador automático PSR-4 usando spl_autoload_register que asigne el prefijo del espacio de nombres Blog\ al directorio src/. Este único cargador automático se encarga de cargar todas tus clases automáticamente.
  • index.php: Tu punto de entrada. Requiere el cargador automático y, después, 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 la publicación (cada uno en su propia línea).

Observa cómo el servicio Publisher depende del modelo Post. Esto demuestra cómo las clases de distintos espacios de nombres pueden trabajar juntas importando lo que necesitan mediante instrucciones use.

Pruébalo tú mismo

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

// TODO: Importa las clases necesarias usando declaraciones 'use'
// - Blog\Models\Author
// - Blog\Models\Post
// - Blog\Services\Publisher

// TODO: Crea un Author llamado "Jane Smith"

// TODO: Create a Post with title "Getting Started with PHP" using that author

// TODO: Crea un Publisher

// TODO: Imprime la bio del autor

// TODO: Imprime el resumen del post

// TODO: Imprime el resultado de publicar el post
?>

Todas las lecciones de Programación Orientada a Objetos

Practica por tu cuenta: Compilador de PHP online