Hai Sipinter! Lama sudah tidak melemaskan jari dengan menulis artikel. Karena beberapa hari ini mimin agak sibuk di real life, jadi dimaklumi saja.
Kali ini kita akan membahas tentang pemrograman php lagi. Kita akan belajar cara memanggil class dan function dari file lain , dengan membuat autoload Composer.
Pasti biasanya kita akan menggunakan fungsi require atau include agar bisa memanggil fungsi lain. Ini tidak akan menjadi masalah kalau hanya satu atau dua file saja yang akan dipanggil.
Bagaimana kalau class dan fungsi yang kita butuhkan berada di banyak file, kan capek juga pake include dan require. Nah karena itu ada cara paling sederhana yang memungkinkan kita memanggil banyak class hanya dengan memanggil satu file.
Ini adalah “autoloading”, artinya kita memanggil atau mendaftarkan semua class yang akan kita gunakan ke satu file autoload. Sehingga kita hanya perlu memanggil file autoload saja, untuk menggunakan semua class dan function yang sudah terdaftar.
Cara seseorang melakukan autoload pasti akan sangat berbeda-beda, agar lebih mudah kita pahami perlu memakai standarnya. Yang paling mudah adalah kita tinggal menggunakan autoload dari Composer.
Apa itu composer? Composer merupakan alat untuk memanajemen kebutuhan paket dalam projek php. Paket ini sendiri berupa kumpulan kode berisi class dan function untuk menyelesaikan tugas tertentu yang sudah jadi dari komunitas php.
Dengan menggunakan autoload Composer yang sudah memiliki standar penulisan. Membuat kita bisa menulis class dan function php, dengan lebih terstruktur dan mudah programmer lain pahami.
Intinya kita sekarang akan belajar membuat dan menggunakan autoload Composer. Untuk memanggil beberapa class dan function dari file lain dengan mudah.
Daftar isi:
- Membuat Contoh Projek Web Sederhana
- Langkah-Langkah Membuat Autoload PHP dengan Composer
- Cara Memanggil Class dan Function dengan Autoload Composer
Membuat Contoh Projek Web Sederhana
Kita akan membuat sebuah web sederhana sebagai contoh. Kita akan membuat susunan foldernya seperti berikut:
- SampleWeb
- Controller – Untuk menyimpan class buatan kita sendiri
- homeController.php
- pageController.php
- View – Untuk menyimpan file tampilan web
- home.php
- page.php
- Route – Untuk menyimpan fungsi routing sederhana
- web.php
- Src – Iseng biasanya untuk menyimpan paket atau defedencies dari luar
- index.php
- Controller – Untuk menyimpan class buatan kita sendiri
Nah karena mimin menggunakan XAMPP maka mimin membuatnya pada folder htdocs. Lalu untuk isi perintah tiap-tiap filenya bisa kamu cek dan download melalui:
Download Source Code SampleWeb (Gitlab)
Atau kamu bisa ikuti langkah-langkah berikut. Pertama kita buat bagian view, yang merupakan contoh tampilan website. berikut isi file home.php dan page.php:
View/home.php
<!DOCTYPE html>
<html>
<head>
<title>SampleWeb - Percobaan Membuat Autoload Composer</title>
</head>
<body>
<h1>Selamat datang di SampleWeb</h1>
<p>
Sample Web merupakan sesi belajar membuat autoload dengan composer yang akan memudahkan kita dalam memanggil class dan function yang kita butuhkan dalam project web php.
</p>
<p><small>Pemrograman Web PHP by Sipintek</small></p>
</body>
</html>
View/page.php
<!DOCTYPE html>
<html>
<head>
<title><?php echo $_GET['page']; ?> - SampleWeb</title>
</head>
<body>
<h1><?php echo $_GET['page']; ?></h1>
<p>
Sekarang anda berada di page <?php echo $_GET['page']; ?>
</p>
<p>
Sample Web merupakan sesi belajar membuat autoload dengan composer yang akan memudahkan kita dalam memanggil class dan function yang kita butuhkan dalam project web php.
</p>
<p><small>Pemrograman Web PHP by Sipintek</small></p>
</body>
</html>
Lalu setelah itu kita buat bagian controllernya yang berfungsi melakukan pengolahan data. Kita akan menbuat dua file yaitu homeController.php dan pageController.php.
Kita akan menggunakan namespace pada controller, untuk mendefinisikan tempat class tersimpan secara virtual. Untuk mencegah terjadinya tabrakan, dengan class lain dalam projek kita.
Begini cara mimin untuk penulisan namespace di php:
- Penulisan namespace samakan saja dengan folder asli tempat script kamu berada. misal:
- file:controller/homeController.php, maka:
namespace controller;
- file:GedeWeb/Controller/Front/homeController.php, maka:
namespace GedeWeb\Controller\Front;
- file:controller/homeController.php, maka:
- Perhatikan penggunaan huruf besar dan kecil.
- Samakan nama file dengan nama classnya. misal kamu membuat class pageController maka nama filenya pageController.php. Jadi agar rapi buat satu class saja dalam satu file.
- Agar bisa kamu gunakan pada file lain, buat perintah use. Misal class homeController dengan namespace GedeWeb\Controller\Front, adalah
use GedeWeb\Controller\Front\homeController;
.
Controller/homeController.php
<?php
namespace Controller;
class homeController
{
function __construct(){
if (isset($_GET['action'])) {
$this->$_GET['action']();
}else{
$this->get();
}
}
public function get()
{
include './View/home.php';
}
}
?>
Controller/pageController.php
<?php
namespace Controller;
class pageController
{
function __construct(){
if (isset($_GET['action'])) {
$this->$_GET['action']();
}else{
$this->get();
}
}
public function get()
{
include './View/page.php';
}
}
?>
Terakhir kita akan membuat file route bernama Route.php, yang berfungsi mengalihkan semua request pengguna ke controllernya.
Route/Route.php
<?php
namespace Route;
class Route
{
public function toController($file)
{
$fileController="Controller\\".$file.'Controller';
$GetController=New $fileController();
}
public function Routing()
{
if(isset($_GET['page']))
{
$this->toController('page');
}
else
{
$this->toController('home');
}
}
}
?>
Untuk file indexnya akan kita setting pada langkah selanjutnya, setelah autoload composer jadi.
Langkah-Langkah Membuat Autoload PHP dengan Composer
- Pertama kamu harus menginstall Composer, untuk caranya sudah mimin jelasakan pada artikel Apa itu Composer dan cara installasinya.
- Lalu buka cmd atau aplikasi terminal lainnya. Masuk ke folder projek kalian, mimin E:/XAMPP/htdocs/SampleWeb.
- Setelah itu aktifkan composer di folder projek kalian dengan perintah
composer init
. Lalu kita akan memasukan data untuk mendefinisikan projek web kita.- Akan muncul
Package name (<vendor>/<name>):
isi dengan nama pembuat / nama projek web kamu lalu enter. contoh:gede_arya/sample_web_autoload
. berikut aturan penulisanya:- Menggunakan huruf kecil (lowercase). Tidak menggunakan spasi bisa gunakan tanda underscore(_), min(-), dan titik (.)
- Berisi nama pembuat, lalu tanda garis miring (slash) dan terakhir nama projek.
- Nama vendor dan projek hanya boleh menggunakan (a-z),(0-9),(_),(-),(.).
- Selanjutnya
Description []:
kita isi dengan penjelasan projek php yang kita buat. Kamu bisa menggunakan spasi dan huruf besar lalu enter. - Saat
Author [Gede Arya <sipintek@gmail.com>, n to skip]:
kamu bisa mengisi nama lengkapmu dan emailmu yang diapit dengan tanda (<>). ContohGede Arya <sipintek@gmail.com>
enter, atau kamu bisa mengosongkannya dengan menulis n lalu enter. Minimum Stability []: dev
. Ini menunjukan projekmu sudah dalam versi apa. Karena masih dalam tahap develop mimin isi dev dan enter. Ada beberapa pilihan yang bisa kamu tulis yaitu stable, RC, beta, alpha, dev.License []: GPL
, ini untuk menentukan projekmu akan menggunakan licensi apa.- Selanjutnya kamu perlu menjelaskan depedencies atau paket luar, yang sangat kamu butuhkan dalam projek. pilih n dan enter saja jika belum ada.
- pertama akan muncul
Would you like to define your dependencies (require) interactively [yes]? n
- kedua,
Would you like to define your dev dependencies (require-dev) interactively [yes]? n
- pertama akan muncul
- Terakhir akan muncul hasil yang kamu setting dan
Do you confirm generation [yes]?
ketik y dan enter jika sudah benar.
- Akan muncul
- Jika berhasil akan muncul file composer.json dalam projekmu. Buka file composer.json dengan text edito sublim, notepad++, vscode atau yang lainnya.
- Lalu sekarang kita akan menambahkan file yang akan di autoload kedalam composer.json. Kita akan menggunakan standar psr-4 dalam melakukan autoloadnya. Baca artikel berikut agar mengerti PSR-4 Autoloader.
{
"name": "gede_arya/sample_web_autoload",
"description": "Belajar cara menggunakan autoload composer dalam projek php",
"type": "project",
"license": "GPL",
"authors": [
{
"name": "I Gede Arya Surya Gita",
"email": "gede@sipintek.com"
}
],
"minimum-stability": "dev",
"require": {},
"autoload":{
"psr-4":{
"Controller\\": "Controller/",
"Route\\": "Route/",
"Src\\": "Src/"
}
}
}
Setelah itu kita akan menggenerate file autoload.php dengan menjalankan perintah composer dump-autoload
pada cmd. Jika berhasil akan menghasilkan folder baru bernama vendor.
Setiap melakukan perubahan pada file composer.json kamu harus menggenerate autoload lagi, dengan perintah composer dump-autoload
. Jika berhasil lanjut ke langkah berikutnya.
Cara Memanggil Class dan Function dengan Autoload Composer
Lalu untuk menggunakannya kamu tinggal memanggil file autoload.php di file index. Lalu tinggal panggil class dengan use, buat objek dan jalankan fungsinya.
contoh cara menggunakan autoload.php pada index.php:
<?php
require_once __DIR__."/vendor/autoload.php";
use Route\Route as Routes;
$route=New Routes();
$route->Routing();
?>
Tinggal testing dan hasilnya seperti gambar berikut:
Sekian postingan kali ini selanjutnya kita akan buat perintah routing yang lebih keren dengan PHP. Oke dah semakin dekat kita dengan framework php sederhana kita.
Jika ada yang bingung atau mau request artikel tinggalkan di kolom komentar. “Nikmati sebuah proses mulai dari belajar mengembangkan dan sampai kamu bisa berbagi untuk orang lain”.
Bantu mimin dengan share postingan ini, siapa tau temenmu ada yang butuh kan! Terima kasih :D.