Membuat PHP Framework Sederhana Part 1

Rabu, 11 Juli 2012 | 10:45

Konsep pemrograman OOP( Object Oriented Programming) memang sangat digandrungi saat ini, bahkan dalam beberapa bahasa pemrograman seperti java telah memakai konsep OOP secara menyeluruh. Pada php sendiri selain masih ada yang menggunakan konsep ‘tempelan’, saat ini banyak yang telah menggunakan konsep OOP secara keseluruhan. Contohnya pada php framework seperti Codeigniter, Kohana, Zend Framework, Symfony, dan lain-lain.

Selain menggunakan php framework yang telah tersedia, kita juga dapat merancang sebuah aplikasi yang benar-benar menggunakan konsep oop secara menyeluruh, artinya tidak mencampur adukan antara konsep konvensional dan konsep oop. Terinspirasi dari framework-framework yang telah saya gunakan, maka kita dapat membuat sebuah framework yang sederhana dengan hanya melakukan beberapa penngaturan. Kuncinya hanyalah membuat sebuah class yang bisa membuat semua class bisa di panggil secara otomatis (autoload), sehingga kita tidak perlu melakukan include file php secara terus menerus.

  1. Buatlah folder-folder yang akan dipakai seagai tempat penyimpanan class-class php yang telah dibuat, misalkan folder root nya adalah myframework, kemudian taruh lah folder controller, model, view, dan library di dalamnya.
  2. Buatlah class autoload nya yang sejajar dengan file index nya. Adapun class autoload nya adalah sebagai berikut:  berinama file class nya bootstrap.php
ini_set('unserialize_callback_func', 'spl_autoload_call');

class autoloader {

public static $loader;

public static function init()
{
if (self::$loader == NULL)
self::$loader = new self();

return self::$loader;
}

public function __construct()
{
spl_autoload_register(array($this,'model'));
spl_autoload_register(array($this,'library'));
spl_autoload_register(array($this,'controller'));
}

public function library($class)
{
set_include_path($_SERVER['DOCUMENT_ROOT'] .                    implode('/',array_slice(explode('/',$_SERVER['PHP_SELF']),0,-1)).'/library/');
spl_autoload_extensions('.php');
spl_autoload($class);
}

public function model($class)
{
set_include_path($_SERVER['DOCUMENT_ROOT'] . implode('/',array_slice(explode('/',$_SERVER['PHP_SELF']),0,-1)).'/model/');
spl_autoload_extensions('.php');
spl_autoload($class);
}

public function controller($class)
{
set_include_path($_SERVER['DOCUMENT_ROOT'] . implode('/',array_slice(explode('/',$_SERVER['PHP_SELF']),0,-1)).'/controller/');
spl_autoload_extensions('.php');
spl_autoload($class);
}
}
autoloader::init();

Adapun penjelasan class nya adalah sebagai berikut:

  1. class kita berinama autoloader, disana kita deklarasikan sebuah variabel public static loader, artinya varibel tersebut bersifat public sehingga dapat diakses diluar class itu sendiri  dengan berbeda file, dan besifat static sehingga dapat dipanggil tanpa harus melakukan instance berulang-ulang.
  2. fungsi ini berfungsi untuk menginstance class autoloader di dalam class itu sendiri, sehingga nanti kita cukup memanggil fungsi tersebut tanpa harus menginstance nya terlebih dahulu.
  3. pada fungsi _construct yang merupakan fungsi konstruktor class autoloader sehingga akan dijalankan terlebih dahulu ketika class tersebut di instance. Di sana semua  folder controller, library, dan model akan di register atau didaftarakan kedalan cache  yang di serialisasi sehingga class-class didalamnya akan didaftarkan untuk melakukan overloading.
  4. fungsi model, libary, dan controller berfungsi untuk  mengautoload file-file class nya.
  5. fungsi autoload dipanggil dengan autoload::init() karena class autoload di instance di dalam class nya itu sendiri.

Kemudian setting di dalam file index.php nya sebagai berikut:

ob_start();
require_once realpath(dirname(__FILE__)).DIRECTORY_SEPARATOR.'bootstrap.php';

......

ob_flush();

Jika class tersebut telah dibuat maka kita tinggal membuat pengaturan lainnya. Ok, tunggu tulisan saya selanjutnya.

Semoga bermanfaat.

© 2014 Unit Pelaksana Teknis TIK. All rights reserved.
LOGIN | SITEMAP