Menu
Coddy logo textTech

復習 - 整理されたプロジェクト

CoddyのPHPジャーニー「オブジェクト指向プログラミング」セクションの一部。レッスン 14/91。

challenge icon

チャレンジ

簡単

適切なnamespace構成を備えた完全なブログアプリケーションを構築し、namespace、use keyword、PSR-4 autoloadingについて学んだことをすべて組み合わせましょう。

実際のPHPアプリケーションがコードをどのように整理するかを示す、5つのファイルから成る、適切に構造化されたプロジェクトを作成します。

  • src/Models/Author.php: Blog\Models namespace内にAuthor classを定義します。public $name property、nameをacceptsして設定するconstructor、そして"Author: [name]"を返すgetBio() methodを持たせます。
  • src/Models/Post.php: Blog\Models namespace内にPost classを定義します。public $titlepublic $author property(authorはAuthor object)を持たせます。constructorはtitleとAuthor objectをacceptsし、両方を設定します。"[title] by [author name]"を返すgetSummary() methodを追加します。
  • src/Services/Publisher.php: Blog\Services namespace内にPublisher classを定義します。Post objectをacceptsし、"Published: [post title]"を返すpublish(Post $post) methodを持たせます。異なるnamespaceにあるPost classをImportするため、use keywordを使用する必要があります。
  • vendor/autoload.php: spl_autoload_registerを使用して、Blog\ namespace prefixをsrc/ directoryにマッピングするPSR-4 autoloaderを作成します。この単一のautoloaderが、すべてのclassの読み込みを自動的に処理します。
  • index.php: エントリーポイントです。autoloaderをRequireし、use keywordを使ってBlog\Models\AuthorBlog\Models\PostBlog\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オンラインコンパイラ