Menu
CoddyTech

Ringkasan: Proyek yang Terorganisasi

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan PHP di Coddy. Pelajaran 14 dari 91.

challenge icon

Tantangan

Mudah

Mari kita bangun aplikasi blog lengkap dengan pengaturan namespace yang tepat, dengan menggabungkan semua yang telah kamu pelajari tentang namespace, kata kunci use, dan pemuatan otomatis PSR-4.

Kamu akan membuat proyek yang terstruktur dengan baik dan terdiri dari lima file, yang menunjukkan cara aplikasi PHP nyata mengatur kodenya:

  • src/Models/Author.php: Definisikan class Author di namespace Blog\Models. Class ini harus memiliki property public $name, constructor yang menerima dan menetapkan nama, serta method getBio() yang mengembalikan "Author: [name]".
  • src/Models/Post.php: Definisikan class Post di namespace Blog\Models. Class ini harus memiliki property public $title dan public $author (dengan author berupa object Author). Constructor menerima judul dan object Author, lalu menetapkan keduanya. Tambahkan method getSummary() yang mengembalikan "[title] by [author name]".
  • src/Services/Publisher.php: Definisikan class Publisher di namespace Blog\Services. Class ini harus memiliki method publish(Post $post) yang menerima object Post dan mengembalikan "Published: [post title]". Kamu perlu mengimpor class Post menggunakan kata kunci use karena class tersebut berada di namespace yang berbeda.
  • vendor/autoload.php: Buat autoloader PSR-4 menggunakan spl_autoload_register yang memetakan prefix namespace Blog\ ke direktori src/. Satu autoloader ini menangani pemuatan semua class-mu secara otomatis.
  • index.php: Titik masukmu. Wajibkan autoloader, lalu gunakan kata kunci use untuk mengimpor Blog\Models\Author, Blog\Models\Post, dan Blog\Services\Publisher. Buat Author bernama "Jane Smith", Post dengan judul "Getting Started with PHP" menggunakan author tersebut, dan sebuah Publisher. Cetak bio author, ringkasan post, dan hasil penerbitan post, masing-masing pada baris tersendiri.

Perhatikan bagaimana service Publisher bergantung pada model Post. Ini menunjukkan bagaimana class dalam namespace yang berbeda dapat bekerja sama dengan mengimpor hal yang mereka perlukan menggunakan pernyataan use.

Coba sendiri

<?php
// Muat autoloader dengan require
require_once 'vendor/autoload.php';

// TODO: Impor class yang diperlukan menggunakan pernyataan 'use'
// - Blog\Models\Author
// - Blog\Models\Post
// - Blog\Services\Publisher

// TODO: Buat Author bernama "Jane Smith"

// TODO: Buat Post berjudul "Getting Started with PHP" menggunakan Author tersebut

// TODO: Buat Publisher

// TODO: Tampilkan biodata Author

// TODO: Tampilkan ringkasan Post

// TODO: Tampilkan hasil penerbitan Post
?>

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler PHP online