Autoload function in PHP

Para programmer PHP mungkin agak lelah bila bermain dengan class.
Dengan membuat class pada file-file yang berbeda,
tentu memudahkan dalam peng-edit-an code-nya nanti.
Tapi, agak repot karena setiap akan menggunakan class lain, file tersebut harus
diikutsertakan dengan include atau require.

Ini contoh kasus kumpulan file class yang berada didalam folder Class.

<htdocs> 
 ├ <Class> 
 │  ├ database.php 
 │  ├ menu.php 
 │  └ validation.php 
 │ 
 └ index.php

Misalnya, mau pake class Database, Menu dan Validation dengan cara standard,
maka isi file index.php:

<?php 
require_once('Class/database.php'); 
$db = new Database();  

require_once('Class/menu.php'); 
$menu = new Menu();  

require_once('Class/validation.php'); 
$valid = new Validation(); 
?>

Nah, itu dia repotnya harus manggil file-file yang dibutuhkan.
Ada tiga require_once disitu.
Bayangkan suatu website yang besar, nggak hanya membutuhkan tiga class.

Ini dia cara yang lebih mudah. Buat file loader.php dengan isi:

<?php 
function __autoload($classname) { 
	require_once("Class/$classname" . ".php"); 
} 
?>

Jadi struktur file-nya:

<htdocs> 
 ├ <Class> 
 │  ├ database.php 
 │  ├ menu.php 
 │  └ validation.php 
 │ 
 ├ index.php 
 └ loader.php

Sekarang kalau mau manggil file class yang lain cukup ikut-sertakan file
loader.php. Berikut contoh isi file index.php.

<?php 
require_once('loader.php');  

$db = new Database(); 
$menu = new Menu(); 
$valid = new Validation(); 
?>

Untuk membuktikan coba isi file database.php dengan:

<?php 
class Database { 
	function Database() { 
		echo "Aku class database yang dipanggil otomatis saat pembuatan object baru."; 
	} 
} 
?>

Buka file index.php melalui web server anda.
Output: Aku class database yang dipanggil otomatis saat pembuatan object baru.

Mungkin akan muncul error message. Tapi santai aja.. bukan karena triknya nggak jitu. Tapi
karena emang class Menu dan Validation belum dibuat.

NB:

  • Nama function yang sama dengan nama class, akan dipanggil otomatis saat object dibuat.
  • Untuk PHP5, bisa juga menggunakan __construct().
Iklan

4 pemikiran pada “Autoload function in PHP

      1. Ini nanya yang mana ya? Composer autoloader, atau yang di artikel ini?

        Yang di artikel ini basic. Kalau mau lebih advanced, bisa dikembangkan sendiri.

        Kalau yang composer autoloader, memang didesain untuk bisa load banyak library.

Tinggalkan Balasan

Please log in using one of these methods to post your comment:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s