Menu
Coddy logo textTech

Итоги: структурированный проект

Часть раздела Объектно-ориентированное программирование путешествия по PHP на Coddy — урок 14 из 91.

challenge icon

Задание

Легко

Давайте создадим полноценное приложение для блога с правильной организацией пространств имен, объединив все, что вы узнали о пространствах имен, ключевом слове use и автозагрузке PSR-4.

Вы создадите хорошо структурированный проект из пяти файлов, который демонстрирует, как реальные PHP-приложения организуют свой код:

  • src/Models/Author.php — Определите класс Author в пространстве имен Blog\Models. У него должно быть свойство public $name, конструктор, который принимает и устанавливает имя, и метод getBio(), возвращающий "Author: " . $this->name.
  • src/Models/Post.php — Определите класс Post в пространстве имен Blog\Models. У него должны быть свойства public $title и public $author (где author — это объект Author). Конструктор принимает заголовок и объект Author, устанавливая оба значения. Добавьте метод getSummary(), который возвращает $this->title . " by " . $this->author->name.
  • src/Services/Publisher.php — Определите класс Publisher в пространстве имен Blog\Services. У него должен быть метод publish(Post $post), который принимает объект Post и возвращает "Published: " . $post->title. Вам нужно будет импортировать класс Post с помощью ключевого слова use, так как он находится в другом пространстве имен.
  • vendor/autoload.php — Создайте автозагрузчик PSR-4 с помощью spl_autoload_register, который сопоставляет префикс пространства имен Blog\ с директорией src/. Этот единственный автозагрузчик будет автоматически обрабатывать загрузку всех ваших классов.
  • index.php — Ваша точка входа. Подключите автозагрузчик, затем используйте ключевое слово use для импорта Blog\Models\Author, Blog\Models\Post и Blog\Services\Publisher. Создайте объект Author с именем "Jane Smith", объект Post с заголовком "Getting Started with PHP", используя этого автора, и объект Publisher. Выведите биографию автора, краткое описание поста и результат публикации поста (каждый пункт с новой строки).

Обратите внимание, как сервис Publisher зависит от модели Post — это демонстрирует, как классы в разных пространствах имен могут работать вместе, импортируя то, что им нужно, с помощью операторов use.

Попробуйте сами

<?php
// Подключить автозагрузчик
require_once 'vendor/autoload.php';

// TODO: Импортируйте необходимые классы, используя операторы 'use'
// - Blog\Models\Author
// - Blog\Models\Post
// - Blog\Services\Publisher

// TODO: Создайте автора (Author) по имени "Jane Smith"

// TODO: Создайте пост (Post) с заголовком "Getting Started with PHP", используя этого автора

// TODO: Создайте издателя (Publisher)

// TODO: Выведите биографию автора

// TODO: Выведите краткое содержание поста

// TODO: Выведите результат публикации поста
?>

Все уроки раздела Объектно-ориентированное программирование

2Пространства имен и автозагрузка

Введение в пространства именКлючевое слово useСтандарт автозагрузки PSR-4Автозагрузчик ComposerИтоги: структурированный проект