復習 - 整理されたプロジェクト
CoddyのPHPジャーニー「オブジェクト指向プログラミング」セクションの一部。レッスン 14/91。
チャレンジ
簡単適切なnamespace構成を備えた完全なブログアプリケーションを構築し、namespace、use keyword、PSR-4 autoloadingについて学んだことをすべて組み合わせましょう。
実際のPHPアプリケーションがコードをどのように整理するかを示す、5つのファイルから成る、適切に構造化されたプロジェクトを作成します。
src/Models/Author.php:Blog\Modelsnamespace内にAuthorclassを定義します。public $nameproperty、nameをacceptsして設定するconstructor、そして"Author: [name]"を返すgetBio()methodを持たせます。src/Models/Post.php:Blog\Modelsnamespace内にPostclassを定義します。public $titleとpublic $authorproperty(authorはAuthorobject)を持たせます。constructorはtitleとAuthorobjectをacceptsし、両方を設定します。"[title] by [author name]"を返すgetSummary()methodを追加します。src/Services/Publisher.php:Blog\Servicesnamespace内にPublisherclassを定義します。Postobjectをacceptsし、"Published: [post title]"を返すpublish(Post $post)methodを持たせます。異なるnamespaceにあるPostclassをImportするため、usekeywordを使用する必要があります。vendor/autoload.php:spl_autoload_registerを使用して、Blog\namespace prefixをsrc/directoryにマッピングするPSR-4 autoloaderを作成します。この単一のautoloaderが、すべてのclassの読み込みを自動的に処理します。index.php: エントリーポイントです。autoloaderをRequireし、usekeywordを使ってBlog\Models\Author、Blog\Models\Post、Blog\Services\PublisherをImportします。"Jane Smith"というnamedのAuthor、そのauthorを使用したtitle"Getting Started with PHP"のPost、そしてPublisherをCreateします。authorのbio、postのsummary、postをpublishingした結果をPrintします(それぞれ別の行に出力します)。
Publisher serviceがPost modelに依存していることに注目してください。これは、異なるnamespaceのclassが、use statementsで必要なものをImportすることによって、どのように連携できるかを示しています。
自分で試してみよう
<?php
// オートローダーを読み込む
require_once 'vendor/autoload.php';
// TODO: 'use' ステートメントを使用して必要なクラスをインポートする
// - Blog\Models\Author
// - Blog\Models\Post
// - Blog\Services\Publisher
// TODO: "Jane Smith" という名前の Author を作成する
// TODO: Create a Post with title "Getting Started with PHP" using that author
// TODO: Publisher を作成する
// TODO: 著者の bio を出力する
// TODO: 投稿の summary を出力する
// TODO: 投稿を公開した結果を出力する
?>オブジェクト指向プログラミングのすべてのレッスン
自分で練習してみよう: PHPオンラインコンパイラ