Saturday, February 14, 2009

Membuat Symfony Plugin Package

Symfony Framework memilik feature pear package plugin, jadi dengan feature ini plugin symfony yang telah di bikin bisa dijadikan paket yang independen tidak terikat oleh aplikasi apapun, dan bila ada aplikasi yang membutuhkan nya cukup install plugin tersebut saja, dan bila sudah tidak membutuhkannya unistall saja... keren-kan ^_^ .

sebelum di mulai cara bikinnya, di artikel ini sistem operasi yang di gunakan adalah Linux Ubuntu Intrepid (8.10) dan menggunakan symfony framework versi 1.2.0. Dan yang di contohkan disini adalah cara mem-paket-kan module dan library saja.

dan diharapkan sebelum mencoba bikin ini, sebelumnya sudah mengerti cara membuat modul dan lib, dan membuat plugin (bukan bikin paket plugin) dahulu, ntar jadi binggung sendiri, tapi kalau mau terus baca monggo aja.... ^_^


di contoh ini di asumsikan kalau plugin yang di buat bernama sfHelloWordPlugin

oke.. kita mulai cara membuatnya..

1. Dalam membuat paket, symfony menggunakan pear, jadi yang pertama adalah instalasi pear terlebih dahulu di Operating System, seperti dibawah ini:

apt-get install php-pear


2. Register chanel symfony-project.com ke dalam pear, caranya seperti di bawah ini:

sudo pear channel-discover pear.symfony-project.com


3. bikinlah sebuah struktur file dan folder seperti di bawah ini



penjelasannya di mulai dari folder lib dan turun ke bawah :

folder lib: adalah untuk menyimpan file yang isinya function2 dan class2 dari plugin yang di buat.

file lib/sfHelloWord.class.php: adalah sebuah file lib yang isinya berupa class atau function, untuk penamaan file nya bisa apa saja, tapi di rekomendasikan menggunakan nama yang sama dengan plugin yang di buat atau nama plugin yang dibuat menjadi prefix nama filenya.

folder modules: adalah folder untuk menyimpan module2 dari plugin yang di buat

folder modules/sfHelloWord: adalah module yang bernama sfHelloWord

folder modules/sfHelloWord/action: adalah folder untuk menyimpan file action dari module sfHelloWord

file modules/sfHelloWord/action/actions.class.php: file action module sfHelloWord

folder modules/sfHelloWord/template: adalah folder untuk menyimpan file template dari module sfHelloWord

file modules/sfHelloWord/template/indexSuccess.php: file template dari action indexSucces

file LICENCE: adalah file yang isinya mengenai lisensi dari plugin yang di buat, dan umumnya plugin symfony menggunakan MIT Lincence

file package.xml: adalah file yang isinya seputar plugin tersebut, antara lain nama plugin, versi plugin, tanggal dibuat plugin, daftar file dan folder plugin, file2 dependesi plugin, daftar software2 yang dibutuhkan plugin dan sebagainya

file README: adalah file yang isinya tentang deskripsi plugin yang di buat, cara instalasi, cara penggunaan.


4. File package.xml adalah file wajib ada dan dibutuhkan dalam membuat paket plugin, karena semua informasi tentang plugin tersimpan di file tersebut.dibawah ini isi filenya:

<?xml version="1.0" encoding="UTF-8"?>
<package packagerversion="1.4.6" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">

<name>sfHelloWordPlugin</name>
<channel>pear.symfony-project.com</channel>
<summary>symfony hello world plugin</summary>
<description>hanya contoh plugin untuk meng-ilustrasikan PEAR packaging</description>
<lead>
<name>dendie sanjaya</name>
<user>dendie_sanjaya</user>
<email>dendie_sanjaya@yahoo.com</email>
<active>yes</active>
</lead>
<date>2009-02-15</date>
<time>17:20:35</time>
<version>
<release>1.0.0</release>
<api>1.0.0</api>
</version>
<stability>
<release>stable</release>
<api>stable</api>
</stability>
<license uri="http://www.symfony-project.org/license">MIT license</license>
<notes>-</notes>

<contents>
<dir name="/">
<file role="data" name="README" />
<file role="data" name="LICENSE" />
<dir name="lib">
<file role="data" name="sfHelloWord.class.php" />
</dir>
<dir name="modules">
<dir name="sfHelloWord">
<file role="data" name="actions/actions.class.php" />
<file role="data" name="templates/indexSuccess.php" />
</dir>
</dir>
</dir>
</contents>

<dependencies>
<required>
<php>
<min>5.0.0</min>
</php>
<pearinstaller>
<min>1.4.1</min>
</pearinstaller>
<package>
<name>symfony</name>
<channel>pear.symfony-project.com</channel>
<min>1.1.0</min>
<max>1.2.0</max>
<exclude>1.0.0</exclude>
</package>
</required>
</dependencies>

<phprelease />
<changelog />
</package>

secara garis besar File package.xml terbagi menjadi empat:
  1. warna hijau, berisikan informasi mengenai format xml dan hal2 yang berhubungan dengan xml
  2. warna merah, berisikan informasi tentang header dari plugin seperti nama author, versi plugin, tanggal release plugin, dan semacamnya
  3. warna biru, berisikan content dari plugin yaitu file2 dan folder 2 dari plugin
  4. warna orange, berisikan dependsi file dan software yang di butuhkan, misalkan versi minimum php, versi minimum/maksimum symfony framework.


5. selanjutnya adalah meng-eksekusi file tersebut menjadi paket, setelah di eksekusi akan menjadi file ter-kompres dengan ekstensi .tgz, dibawah ini adalah caranya (sebelumnya masuk dulu ke root folder tempat file2 yang akan di buatkan paketnya):

pear package


6. membuat paket plugin sudah berhasil, dan sekarang tinggal instal saja plugin tersebut di aplikasi yang membutuhkannya, caranya seperti ini

php symfony plugin:install file:///home/dendie/temporary/bikin_plugin/sfHelloWordPlugin-1.0.0.tgz

nama plugin dan path nya hanya sebagai contoh saja.

Bila kita ingin memberikan contribute plugin pada symfony, bisa di upload ke http://www.symfony-project.org/plugins/, jadi nanti saat install nya seperti ini :

php symfony plugin:install sfHelloWordPlugin

7. untuk melihat apakah plugin sudah sukses terinstall atau belum bisa diliat dengan cara dibawah ini:

php symfony plugin:list

8. jangan lupa membersihkan cache symfony,

php symfony cc

9. sekarang lib dari plugin sudah bisa digunakan dilevel aplikasi apa saja dan untuk mengaktifkan modul plugin pada sebuah aplikasi, cara seperti ini

1. bukan file setting.yml dari aplikasi yang yang bersangkutan (apps/nama_aplikasi/config/setting.yml

2.tambahkan baris berikut
  • sebelumnya : enabled_modules: [default]
  • menjadi: enabled_modules: [default, sfHelloWord],
3. untuk mengaktifkan module sfHelloWord dan untuk meng-akses-nya seperti ini http://ipaddress/web/index.php/sfHellpWord.
nb: referensi lengkapnya di : http://www.symfony-project.org/book/1_0/17-Extending-Symfony#Plug-Ins

2 comments: