mul14 blognest


Autoload function in PHP

Ditulis dalam Development, PHP, Web oleh mul14 di/pada 2007-September-8

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().

Tinggalkan Balasan

Anda harus Teridentifikasi untuk menuliskan komentar.