Menu
Coddy logo textTech

요약 - 정리된 프로젝트

Coddy PHP 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 91개 중 14번째.

challenge icon

챌린지

쉬움

네임스페이스, use 키워드, 그리고 PSR-4 오토로딩에 대해 배운 모든 내용을 종합하여 적절한 네임스페이스 구조를 갖춘 완전한 블로그 애플리케이션을 구축해 보겠습니다.

실제 PHP 애플리케이션이 코드를 구성하는 방식을 보여주는 5개의 파일로 구성된 잘 구조화된 프로젝트를 만들게 됩니다:

  • src/Models/Author.phpBlog\Models 네임스페이스 안에 Author 클래스를 정의합니다. 이 클래스는 public $name 속성, 이름을 받아 설정하는 생성자, 그리고 "Author: [name]"을 반환하는 getBio() 메서드를 가져야 합니다.
  • src/Models/Post.phpBlog\Models 네임스페이스 안에 Post 클래스를 정의합니다. 이 클래스는 public $titlepublic $author 속성(여기서 author는 Author 객체임)을 가져야 합니다. 생성자는 제목과 Author 객체를 받아 두 속성을 모두 설정합니다. "[title] by [author name]"을 반환하는 getSummary() 메서드를 추가하세요.
  • src/Services/Publisher.phpBlog\Services 네임스페이스 안에 Publisher 클래스를 정의합니다. 이 클래스는 Post 객체를 인자로 받아 "Published: [post title]"을 반환하는 publish(Post $post) 메서드를 가져야 합니다. Post 클래스는 다른 네임스페이스에 있으므로 use 키워드를 사용하여 임포트해야 합니다.
  • vendor/autoload.phpBlog\ 네임스페이스 접두사를 src/ 디렉토리에 매핑하는 spl_autoload_register를 사용하여 PSR-4 오토로더를 만듭니다. 이 단일 오토로더는 모든 클래스를 자동으로 로드하는 역할을 합니다.
  • index.php — 애플리케이션의 진입점입니다. 오토로더를 require한 다음, use 키워드를 사용하여 Blog\Models\Author, Blog\Models\Post, Blog\Services\Publisher를 임포트합니다. 이름이 "Jane Smith"Author를 생성하고, 해당 작성자를 사용하여 제목이 "Getting Started with PHP"Post를 생성한 뒤, Publisher를 생성합니다. 작성자의 바이오(bio), 포스트 요약, 그리고 포스트 발행 결과를 각각 한 줄씩 출력하세요.

Publisher 서비스가 Post 모델에 어떻게 의존하는지 주목해 보세요. 이는 서로 다른 네임스페이스에 있는 클래스들이 use 문을 통해 필요한 것을 임포트함으로써 어떻게 함께 작동할 수 있는지를 보여줍니다.

직접 해보기

<?php
// 오토로더를 불러옵니다
require_once 'vendor/autoload.php';

// TODO: 'use' 문을 사용하여 필요한 클래스들을 가져오세요
// - Blog\Models\Author
// - Blog\Models\Post
// - Blog\Services\Publisher

// TODO: 이름이 "Jane Smith"인 Author를 생성하세요

// TODO: 해당 작성자를 사용하여 제목이 "Getting Started with PHP"인 Post를 생성하세요

// TODO: Publisher를 생성하세요

// TODO: 작성자의 bio를 출력하세요

// TODO: 게시물의 요약(summary)을 출력하세요

// TODO: 게시물 발행 결과를 출력하세요
?>

객체 지향 프로그래밍의 모든 레슨