1. Capaian Pembelajaran
Setelah mengikuti pertemuan ini, mahasiswa diharapkan mampu:
- Memahami konsep namespace dalam PHP.
- Menjelaskan fungsi namespace untuk menghindari konflik nama class.
- Menggunakan namespace pada beberapa class berbeda.
- Memahami konsep autoloading class.
- Mengimplementasikan autoloading menggunakan PSR-4 dan Composer.
2. Masalah Tanpa Namespace
Dalam proyek besar, sering terjadi nama class yang sama.
Contoh masalah:
class User {}
class User {}
Kode di atas akan menyebabkan fatal error karena PHP tidak bisa membedakan class dengan nama yang sama.
Solusinya adalah menggunakan namespace.
3. Konsep Namespace dalam PHP
3.1 Pengertian Namespace
Namespace adalah cara untuk mengelompokkan class, interface, dan function ke dalam ruang nama tertentu.
Analogi:
- Nama orang bisa sama
- Tetapi alamat rumahnya berbeda
Namespace seperti alamat class.
3.2 Sintaks Namespace
Namespace dideklarasikan di baris paling atas file PHP.
<?php
namespace App\Models;
class User {
public function info() {
return "Ini class User dari App\\Models";
}
}
4. Menggunakan Class dengan Namespace
4.1 Pemanggilan Menggunakan Fully Qualified Name
<?php
$user = new App\Models\User();
echo $user->info();
4.2 Menggunakan Keyword use
Agar kode lebih rapi:
<?php
use App\Models\User;
$user = new User();
echo $user->info();
5. Studi Kasus Konflik Nama Class
5.1 Dua Class dengan Nama Sama
// File: App/Models/User.php
namespace App\Models;
class User {}
// File: App/Controllers/User.php
namespace App\Controllers;
class User {}
Kedua class tidak konflik karena berada di namespace berbeda.
6. Konsep Autoloading Class
6.1 Pengertian Autoloading
Autoloading adalah teknik untuk memuat file class secara otomatis tanpa require atau include manual.
Tanpa autoloading:
require 'User.php';
require 'Product.php';
require 'Order.php';
Dengan autoloading:
new User();
new Product();
new Order();
7. Autoloading Standar PSR-4
7.1 Apa itu PSR-4
PSR-4 adalah standar autoloading PHP yang menghubungkan:
- Namespace
- Struktur folder
Contoh:
App\Models\User → app/Models/User.php
8. Autoloading Menggunakan Composer
8.1 Pengertian Composer
Composer adalah dependency manager PHP yang juga menyediakan autoloading PSR-4.
8.2 Struktur Folder Proyek
project/
│── composer.json
│── vendor/
│── app/
│ ├── Models/
│ │ └── User.php
│ └── Controllers/
│ └── UserController.php
│── index.php
8.3 Konfigurasi composer.json
{
"autoload": {
"psr-4": {
"App\\": "app/"
}
}
}
Jalankan perintah:
composer dump-autoload
9. Contoh Class dengan Namespace
9.1 Class User (Model)
<?php
namespace App\Models;
class User {
public function getName() {
return "Mahasiswa";
}
}
9.2 Class UserController
<?php
namespace App\Controllers;
use App\Models\User;
class UserController {
public function index() {
$user = new User();
return $user->getName();
}
}
9.3 File index.php
<?php
require 'vendor/autoload.php';
use App\Controllers\UserController;
$controller = new UserController();
echo $controller->index();
10. Praktik Mandiri
- Buat namespace
App\Services - Buat class
AuthService - Panggil class tersebut dari
index.php - Pastikan tanpa
requiremanual
11. Kesalahan Umum Mahasiswa
- Namespace tidak di baris pertama file
- Salah penulisan huruf besar/kecil folder
- Lupa menjalankan
composer dump-autoload - Salah mapping namespace ke folder
12. Rangkuman
- Namespace mencegah konflik nama class
- Namespace membuat struktur kode rapi dan terorganisir
- Autoloading memudahkan pengelolaan banyak class
- PSR-4 adalah standar autoloading modern PHP