Menu
CoddyTech

Pengenalan Namespace

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

Saat proyek PHP-mu berkembang, kamu akan membuat banyak class. Apa yang terjadi jika dua class memiliki nama yang sama?

Misalnya, kamu mungkin memiliki class User untuk blogmu dan class User lainnya untuk tokomu. Namespace mengatasi masalah ini dengan mengatur class ke dalam kelompok yang logis.

Namespace seperti folder untuk class-mu. Kamu mendeklarasikannya di bagian atas file PHP-mu menggunakan kata kunci namespace:

<?php
namespace Blog;

class User {
    public $name;
    
    public function __construct($name) {
        $this->name = $name;
    }
}

Sekarang kamu bisa memiliki class User lain di namespace yang berbeda:

<?php
namespace Shop;

class User {
    public $email;
    
    public function __construct($email) {
        $this->email = $email;
    }
}

Untuk menggunakan class dengan namespace, kamu merujuknya dengan jalur lengkap menggunakan garis miring terbalik:

<?php
$blogUser = new \Blog\User("Alice");
$shopUser = new \Shop\User("alice@example.com");

echo $blogUser->name . "\n";
echo $shopUser->email . "\n";

Output:

Alice
alice@example.com

Backslash \ memisahkan tingkat namespace, mirip seperti garis miring yang memisahkan folder dalam path file. Kamu juga bisa membuat namespace bertingkat seperti App\Models\Blog untuk pengorganisasian yang lebih mendalam.

Poin Penting: Namespace mencegah konflik nama dan menjaga kodemu tetap teratur. Selalu deklarasikan namespace sebelum kode lain di file-mu, kecuali pernyataan declare.

challenge icon

Tantangan

Mudah

Mari susun aplikasi kecil menggunakan namespace untuk mencegah konflik nama antara class dengan nama yang sama.

Bayangkan kamu sedang membangun sistem yang menangani kendaraan dan hewan. Kedua domain memiliki entitas bernama Car: yang satu mewakili mobil sungguhan, sedangkan yang lain adalah kucing peliharaan bernama "Car" (ya, beberapa orang memang menamai kucing mereka seperti itu!).

Kamu akan membuat tiga file:

  • Vehicle/Car.php: Definisikan class Car di namespace Vehicle dengan property public $brand. Constructor harus menerima nama merek dan menetapkannya. Tambahkan method describe() yang mengembalikan "Vehicle: [brand]".
  • Animal/Car.php: Definisikan class Car di namespace Animal (ini adalah kucing bernama Car!). Class ini harus memiliki property public $age. Constructor menerima usia dan menetapkannya. Tambahkan method describe() yang mengembalikan "Cat named Car, age: [age]".
  • main.php: Sertakan kedua file class menggunakan require_once. Buat satu object dari setiap namespace menggunakan path namespace lengkapnya, lalu cetak hasil pemanggilan describe() pada setiap object (masing-masing pada barisnya sendiri).

Di main.php, buat:

  • Vehicle\Car dengan merek "Toyota"
  • Animal\Car dengan usia 3

Ingat untuk menggunakan backslash \ guna merujuk class dengan namespace menggunakan path lengkapnya saat membuat object.

Coba sendiri

<?php
// Sertakan file class
require_once 'Vehicle/Car.php';
require_once 'Animal/Car.php';

// TODO: Buat object Vehicle\Car dengan merek "Toyota"
// Ingat untuk menggunakan path namespace lengkap dengan backslash

// TODO: Buat object Animal\Car dengan usia 3
// Ingat untuk menggunakan path namespace lengkap dengan backslash

// TODO: Cetak hasil describe() untuk setiap object (masing-masing pada baris tersendiri)

?>
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler PHP online