복습 - 체계적인 프로젝트
Coddy PHP 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨. 91개 중 14번째.
챌린지
쉬움적절한 namespace 구성으로 완전한 블로그 애플리케이션을 만들어 보겠습니다. namespace, use keyword, PSR-4 autoloading에 대해 지금까지 배운 모든 내용을 하나로 결합합니다.
실제 PHP 애플리케이션이 코드를 구성하는 방식을 보여 주는 5개의 파일로 잘 구조화된 프로젝트를 만들게 됩니다.
src/Models/Author.php:Blog\Modelsnamespace에Authorclass를 정의합니다.public $nameproperty, 이름을 accepts하고 설정하는 constructor, 그리고"Author: [name]"을 반환하는getBio()method가 있어야 합니다.src/Models/Post.php:Blog\Modelsnamespace에Postclass를 정의합니다.public $title및public $authorproperties가 있어야 하며, 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가 있어야 합니다.Postclass가 다른 namespace에 있으므로usekeyword를 사용해 Import해야 합니다.vendor/autoload.php:Blog\namespace prefix를src/directory에 매핑하는spl_autoload_register를 사용해 PSR-4 autoloader를 만듭니다. 이 하나의 autoloader가 모든 class의 로딩을 자동으로 처리합니다.index.php: entry point입니다. autoloader를 Require한 다음,usekeyword를 사용해Blog\Models\Author,Blog\Models\Post,Blog\Services\Publisher를 Import합니다."Jane Smith"namedAuthor, 해당 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: 게시물의 요약을 출력하세요
// TODO: 게시물 발행 결과를 출력하세요
?>객체 지향 프로그래밍의 모든 레슨
직접 연습해 보세요: 온라인 PHP 컴파일러