요약 - 정리된 프로젝트
Coddy PHP 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 91개 중 14번째.
챌린지
쉬움네임스페이스, use 키워드, 그리고 PSR-4 오토로딩에 대해 배운 모든 내용을 종합하여 적절한 네임스페이스 구조를 갖춘 완전한 블로그 애플리케이션을 구축해 보겠습니다.
실제 PHP 애플리케이션이 코드를 구성하는 방식을 보여주는 5개의 파일로 구성된 잘 구조화된 프로젝트를 만들게 됩니다:
src/Models/Author.php—Blog\Models네임스페이스 안에Author클래스를 정의합니다. 이 클래스는public $name속성, 이름을 받아 설정하는 생성자, 그리고"Author: [name]"을 반환하는getBio()메서드를 가져야 합니다.src/Models/Post.php—Blog\Models네임스페이스 안에Post클래스를 정의합니다. 이 클래스는public $title및public $author속성(여기서 author는Author객체임)을 가져야 합니다. 생성자는 제목과Author객체를 받아 두 속성을 모두 설정합니다."[title] by [author name]"을 반환하는getSummary()메서드를 추가하세요.src/Services/Publisher.php—Blog\Services네임스페이스 안에Publisher클래스를 정의합니다. 이 클래스는Post객체를 인자로 받아"Published: [post title]"을 반환하는publish(Post $post)메서드를 가져야 합니다.Post클래스는 다른 네임스페이스에 있으므로use키워드를 사용하여 임포트해야 합니다.vendor/autoload.php—Blog\네임스페이스 접두사를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: 게시물 발행 결과를 출력하세요
?>객체 지향 프로그래밍의 모든 레슨
8매직 메서드
매직 메서드 소개__toString 및 __debugInfo__get, __set, __isset, __unset__call 및 __callStatic__clone 및 객체 복제__serialize 및 __unserialize요약 - 커스텀 컬렉션