Kaskus

Tech

adityapurwaAvatar border
TS
adityapurwa
[PHP] Codecell - PHP Framework
Selamat malam, beberapa hari ini saya sedang mengerjakan framework buat PHP. Saya masih belajar dan sadar apa yang saya bagikan ini tidak lain merupakan titipin dari Allah Azza wa Jalla, yang Maha Memberi Ilmu.

Maka, sekarang saya akan memberikan perkenalan kepada framework buatan saya, Codecell.

Silahkan diunduh terlebih dahulu di sini, bagi yang ingin berkontibrusi, silahkan ikut bantu saya, bantuan kalian sangat bermanfaat.
Codecell Source Download

Oke, jadi. Apa kelebihan dari Codecell? Bisa dibilang tidak ada, tapi Codecell menerapkan sesuatu yang unik, sesuatu yang beda, salah satu fitur utamanya adalah Authenticator.

Authenticator memungkinkan anda untuk menghentikan kebiasaan melakukan pengecekan session pada user. Pasalnya beberapa orang lupa melakukan pengecekan session dan user bisa berkeliaran semaunya sendiri.

Tidak hanya authenticator, Codecell dilengkapi dengan view engine yang bernama Snap. Yap, Snap memungkinkan anda untuk melupakan pengecekan variabel dengan isset di setiap kali ingin melakukan output variabel yang kadang ada dan kadang tidak.

Bagaimana, semua itu bisa berjalan? Oke, kita secara bertahap akan mulai tata cara penggunaan Codecell dari awal sampai akhir.

Installasi
Installasi Codecell cukup mudah, silahkan download source code yang sudah disediakan di atas. Gunakan gitsupaya anda juga bisa melakukan kontrol versi pada aplikasi web anda.

Buat sebuah direktori di web server anda, untuk Apache ada di htdocs. Misalkan codecell, masuk ke direktori tersebut dengan cd. Lalu ketikkan perintah git berikut.

Code:
git clone https://adityapurwa@bitbucket.org/adityapurwa/codecell-public.git


Maka isi dari direktori anda akan terisi otomatis dengan update terbaru dari Codecell. Setelah itu, ada satu hal penting lainya.

CODECELL TIDAK BISA BERJALAN SELAIN DI ROOT. Yup, anda tidak bisa menjalankan Codecell dengan cara http://localhost/codecell, langkah yang harus kita lakukan sekarang adalah membuatkan Codecell domain sendiri.

Lihat di direktori Apache, lalu ada folder dengan nama conf. Buka folder tersebut hingga mengarah ke /conf/extra/httpd-vhosts.conf. File httpd-vhosts berisi konfigurasi virtual host. Buatlah satu virtual host yang direktori rootnya mengarah ke direktori codecell, mungkin seperti ini.

Code:

<VirtualHost *:8080>
ServerName alaric.codecell.fx
ServerAlias [url=http://www.alaric.codecell.fx]www.alaric.codecell.fx[/url]
DocumentRoot "E:/Development/Web/ServerOne/htdocs/codecell-public"
</VirtualHost>


Codecell versi pertama ini, mempunyai nama sandi Alaric.

Apabila selesai, silahkan restart Apache anda. Lalu kita harus memberi tahu komputer kita bahwa alamat yang baru kita buat di atas mengarah ke komputer kita sendiri. Apabila sisem operasi anda Windows, silahkan buka

Code:
C:\Windows\System32\Drivers\Etc\Hosts

Lalu tambahkan baris di paling bawah seperti ini.

Code:
127.0.0.1 alaric.codecell.fx

alaric.codecell.fx bisa diganti dengan domain yang anda inginkan.

Selamat, Codecell sudah berhasil terpasang di sistem anda!.

Lalu, apa langkah selanjutnya? Coba gunakan web browser untuk membuka http://alaric.codecell.fxatau apapun anda mengatur nama domainya. Maka akan terlihat tulisan sambutan.

MVC
Codecell menggunakan desain MVC, di mana konsentrasi code terpisah-pisah berdasarkan tujuan dan peran masing-masing. Pengetahuan tentang MVC wajib dimiliki. Codecell bukan HMVC, dia tidak menerapkan sistem hirarki seperti di HMVC. Tapi, Codecell mempunyai package-package pembagian untuk penempatan controller. Secara default, package yang ada adalah default.

Package, biasanya dibagi berdasarkan user yang mengakses. Sehingga akan ada package admin, user, guest, dsb. Baru di dalam package tersebut ada controller-controller yang melakukan pekerjaanya.

Snap It!
Yup, fitur dari Codecell yang akan kita coba pertama kali adalah Snap. Snap adalah view engine bawaan dari Codecell yang membuat kita melupakan pengecekan isset() pada setiap variabel di view kita.

Lihat di controller default/index.php, di method index, ada baris code seperti ini.

Code:

$this->view->title = 'Codecell PHP Framework';
$this->view->render('index');


Isi dari method index, menyisipkan variabel view ke dalam view yang akan ditampilkan, variable yang disisipkan kedalam view bisa diakses oleh view yang ditampilkan. Dalam kasus ini adalah variabel dengan nama $title.

Lalu, bagaimana cara Codecell menampilkanya? Silahkan buka view yang dipanggil, berada di /views/index.php

Sebelum lebih lanjut, PHP biasa, ataupun beberapa framework lainya akan menggunakan cara tradisional, yaitu menggunakan isset.

Code:

<?= isset($title) ? $title : null?>

Yup, anda harus mengetikkan code tersebut hanya untuk menampilkan variabel title dengan aman.

Lalu, bagaiman dengan snap?
Code:

>>title<<

Nah, code yang sederhana, bersih, dan rapi inilah yang digunakan oleh Snap untuk menampilkan variabel title.
emoticon-Matabelo

Meragukanya? Silahkan buka file view tersebut, isinya adalah sebagai berikut.
Code:
<!DOCTYPE>
<html>
<head>
<title> >>title<< </title>
</head>
<body>
<h1> >>title<< </h1>

<h2>
Hello World
</h2>
</body>
</html>


Hanya ada >>title<<, tidak ada isset() dan sebagainya. Enak bukan? Lalu bagaimana jika ternyata variabel title tidak ada isinya? Coba komentari baris di Controller yang memberikan nilai dari title.

Code:

// $this->view->title = "....";


Lalu refresh browser anda. Nah, tidak ada pesan error seperti apabila anda lupa menggunakan isset. Bersih, dan sangat bersih!

Authenticator
Authenticator, digunakan oleh Controller untuk melakukan proses autentikasi pada method-method protected dan private.

Kita akan langsung mencobanya, silahkan tambahkan method protected di controller /default/index.php.

Hingga kurang lebih bentuknya seperti ini.
Code:

<?php
class Index extends CC_Controller
{

public function __construct()
{
parent::__construct(new Admin_Authenticator());
@Session::start();
}

public function index()
{
$this->view->title = 'Codecell PHP Framework';
$this->view->render('index');
}

public function session(){
Session::set("username","admin");
}

public function unsession(){
Session::stop();
}

protected function forbidden(){
echo "Hanya orang-orang bernama admin yang boleh ada di sini!";
}
}


Sekarang, buat sebuah Authenticator, letakan di folder extensions/user, beri nama admin_authenticator.php.

Isi seperti ini,
Code:

<?php
class Admin_Authenticator extends CC_Authenticator
{

public function __construct()
{
parent::__construct();
}
/**
* Executed when the authenticate() method returns true.
* @return bool : True to continue calling controller method, false otherwise.
*/
public function on_success()
{
return true;
}

/**
* Executed when the authenticate() method returns false.
*/
public function on_failed()
{
die("<h1>FORBIDDEN</h1>");
}

public function authenticate()
{
return Session::get("username") == 'admin';
}
}


Satu controller hanya bisa mempunyai satu authenticator. Apabila kalian teliti, maka nama-nama file di Codecell huruf kecil semua meski nama classnya sesuai dengan aturan penamaan class.

Nah, sangat disarankan menggunakan huruf kecil, karena di sistem operasi yang nama filenya case-sensitive, Codecell akan mengalami kesulitan apabila nama filenya Alay, besar kecil, dan sebagainya. emoticon-Malu (S)

Nah, coba sekarang anda akses halaman method forbidden. Struktur URL di Codecell adalah nama_package/nama_controller/nama_method,
jadi untuk mengakses method forbidden, kita menggunakan alamat /default/index/forbidden.

Akan muncul tulisan forbidden besar di sana. Itu karena method forbidden diindikasikan sebagai protected (dilindungi), sehingga untuk mengaksesnya harus melalui authenticator terlebih dahulu. Sedangkan authenticator tidak menemukan bahwa sesi username kita adalah admin.

Sekarang, untuk mengeset sesi username menjadi admin, akses method session. Lalu coba buka lagi halaman forbidden.

Nah, karena authenticator sudah melihat bahwa anda admin, maka anda dipersilahkan masuk. Coba akses method unsession, dan buka lagi method forbidden.

Kembali seperti semula, karena unsession menghilangkan sesi username kita yang semula admin menjadi tidak ada.

Nah, selain dari dua fitur tersebut. Saya ingin terus mengembangkan Codecell dengan kemampuan-kemampuan unik dan spesial lainya. Saran dan kritik sangat dibutuhkan demi kemajuan dari Codecell, hidup PHP, hidup Framework Indonesia, hidup Programmer bangsa Indonesia

Aditya Purwa, Codecell Developer
Polling
0 suara
Apakah Menurutmu Codecell Bisa Bersaing dengan Framework Lainya?
0
1.3K
4
GuestAvatar border
Komentar yang asik ya
Urutan
Terbaru
Terlama
GuestAvatar border
Komentar yang asik ya
Komunitas Pilihan