Welcome to Abdul Malik Ikhsan's Blog

PHPDocumentor : The Complete Documentation Solution for PHP

Posted in Teknologi, tips and tricks, Tutorial PHP by samsonasik on June 26, 2010

Menulis dokumentasi yang baik sangat penting bagi keberhasilan setiap proyek perangkat lunak. Kualitas dokumentasi bahkan bisa lebih penting daripada kualitas kode itu sendiri.  Kebanyakan programmer paling malas untuk membuat dokumentasi dengan alasan tidak mempunyai waktu yang cukup untuk membuat dokumentasi yang baik. Nah, apa yang terjadi ketika terjadi pengembangan perangkat lunak ? Programmer itu sendiri kesulitan untuk menerjemahkan kode programnya sendiri.   Nah, yang lebih jadi masalah apabila programmernya ganti. Kebayang ga apa yg akan terjadi ? He.he.he.he…

phpDocumentor dirancang untuk memudahkan untuk membuat dokumentasi.  Untuk menginstall phpDocumentor, pertama kita harus mempunyai PEAR , cara installnya silakan dibaca sendiri. Setelah itu kita run command :

pear install PhpDocumentor

Kalau sudah, kita buat deh simulasi contoh pembuatan dokumentasinya. Kita buat folder dan kita buat file-file php kita, contoh kita punya 2 file di satu folder, misal di D:\Zend\Apache2\htdocs\tutwordpress\testwillbedoc , dan kita beri nama WordPress1.php dan WordPress2.php. phpDocumentor mempunyai tag-tag yang berawalan dengan ‘@’ yang merupakan deskripsi program.

<?php
/**
 * This class is Parent of WordPress2
 * @author Abdul Malik Ikhsan
 * @filesource WordPress1.php
 * @version 1.0
 */
class WordPress1
{
 /**
 * a static variable
 * @static
 */
 public static $astaticvar = 0;

 /**
 * @todo initialize all func needed
 * @access public
 * @param String $param1
 * @param String $param2
 */
 public function WordPress1($param1,$param2)
 {
 //initialize all func needed
 }
}
?>

Kemudian file ke 2

<?php
/**
 * This class is Child of WordPress1
 * @author Abdul Malik Ikhsan
 * @filesource WordPress2.php
 * @version 1.0
 */

require_once 'Wordpress1.php';
class WordPress2 extends WordPress1
{
 /**
 * @todo initialize all func needed
 * @access public
 * @param String $param1
 * @param String $param2
 * @see WordPress1 Constructor
 */
 public function WordPress2($param1,$param2)
 {
 //initialize all func needed
 parent::Wordpress1($param1,$param2);
 }

 private function staticFunc()
 {

 }

 public function callerFunc()
 {

 }
}
?>

Kalau sudah, coba deh run di command line, seperti berikut :

phpdoc -o HTML:frames:phpedit -d D:\Zend\Apache2\htdocs\tutwordpress\testwillbedoc -s -t D:\Zend\Apache2\htdocs\tutwordpress\docs

Ok, kalau berhasil, maka akan terbentuk folder di D:\Zend\Apache2\htdocs\tutwordpress\ dan di dalamnya ada file-file HTML yang tergenerate seperti gambar berikut :

Nah, Coba kita klik file index.html-nya, maka akan tampil seperti berikut :

PHPUnit : Unit Testing For PHP

Posted in Teknologi, testing, Tutorial PHP by samsonasik on June 20, 2010

Dalam dunia pemrograman, Unit Testing adalah metode verifikasi perangkat lunak di mana programmer mengetes bahwa suatu unit program layak untuk dipakai. Unit tes biasanya ditulis dan dijalankan oleh programmer untuk memastikan bahwa kode memenuhi desain dan berperilaku sebagaimana diinginkan. Tujuan dari pengujian unit adalah mengisolasi setiap bagian dari program dan menunjukkan bahwa bagian-bagian individu (unit-unit tersebut) adalah benar.  Di dalam procedural programming methodology, sebuah unit adalah sebuah function atau sebuah procedure.

Idealnya, sebuah test kasus dipisahkan dari kasus yang lain. Tapi pada kenyataannya, itu terserah programmer itu sendiri (ketahuan malasnya, xi.xi.xi. )
Ok, let’s bahas tentang PHPUnit. PHPUnit adalah Unit Testing Framework untuk bahasa pemrograman PHP.  Pertama, kita install dulu PHPUnitnya. Petunjuk installnya bisa dilihat di sini . Setelah itu, kita coba buat contoh coding program yang mengexstends kelas di PHPUnit.

<?php
 require_once "PHPUnit/Framework/TestCase.php";

 class testoperasibilangan extends PHPUnit_Framework_TestCase
 {
 //test penambahan...
 public function testTambah()
 {
 $this->assertEquals(11,5+6);
 }
 //test pengurangan...
 public function testPengurangan()
 {
 $this->assertEquals(-1,5-6);
 }
 }
?>

Ok, saatnya mengecek, kita bisa pakai command line untuk mengecek. (sebelumnya, jangan lupa setting path environment ke file execuatable php, ex: set path =c:\webcontainerservernya\bin\php.exe  atau di linux bisa set di /etc/environment )


Dari gambar di atas terlihat bahwa Test OK (berhasil), bagaimana kalau test gagal ? maka akan tampil layaknya seperti gambar berikut.

Demikian, semoga bermanfaat.

Sumber :
http://en.wikipedia.org/wiki/Unit_Testing
http://en.wikipedia.org/wiki/PHPUnit
http://onlamp.com/pub/a/php/2005/12/08/phpunit.html
http://www.phpunit.de/

Zend Framework : Create Web Services using Zend_Soap

Posted in Tutorial PHP, Zend Framework by samsonasik on June 16, 2010

Web Services adalah software sistem design yang memungkinkan untuk INTEROPERABILITY aplikasi antara komputer satu dengan lainnya melalui jaringan via HTTP. Dengan web services, aplikasi di satu komputer memanggil method ( method-method ) di aplikasi lain, di komputer yang berbeda, dengan bahasa Pemrograman yang bisa berbeda. Misalkan kita di sisi server membuat web services menggunakan .NET, di sisi client kita tidak perlu mempunyai .NET. Nah, bagaimana komunikasinya ? Komunikasinya melalui sebuah Message Format, biasa disebut SOAP ( Simple Object Access Protocol ).
Web Service mengeluarkan output berformat XML yang disebuat WSDL ( Web Service Description Language).  Nah, file XML ini yang dikonsumsi oleh client dan didapatlah output.
Ok, let’s coding :
Saya akan mensimulasikan secara local. Pertama, kita siapkan class yang akan kita panggil, kita taruh di folder zfprojectnya\library :

<?php

class Soaps
{
 /**
 * Penambahan method
 *
 * @param Int $bilpertama
 * @param Int $bilkedua
 * @return Int
 */
 public function penambahan_data($bilpertama,$bilkedua)
 {
 $return = $bilpertama + $bilkedua;
 return  $return ;
 }

 /**
 * Pengurangan method
 *
 * @param Int $bilpertama
 * @param Int $bilkedua
 * @return Int
 */
 public function pengurangan_data($bilpertama,$bilkedua)
 {
 return $bilpertama - $bilkedua;
 }
}

Setelah itu, kita siapkan Controller kita :

<?php
//include file needed
require_once realpath(APPLICATION_PATH . '/../library/').'/Soaps.php';

class SoapwordpressController extends Zend_Controller_Action
{
    private $_WSDL_URI="http://192.168.1.3:10000/zftutwordpress/public/soapwordpress?wsdl";

    public function indexAction()
    {
        $this->getHelper('viewRenderer')->setNoRender();
        if(isset($_GET['wsdl'])) {
            //mengembalikan wsdl...
            $this->hadlereturnWSDL();
        } else {
            //menghandle SOAP request...
            $this->handleActualSOAP();
        }
        die;
    }

    private function hadlereturnWSDL() {
        $autodiscover = new Zend_Soap_AutoDiscover();
        $autodiscover->setClass('Soaps');
        $autodiscover->handle();
    }

    private function handleActualSOAP()
    {
        $soap = new Zend_Soap_Server($this->_WSDL_URI);
        $soap->setClass('Soaps');
        $soap->handle();
    }

    public function clientAction() {

        $client = new Zend_Soap_Client($this->_WSDL_URI);
        //isi variable...
        $tambah =  $client->penambahan_data(45,7);

        //coba tampilkan...
        echo $tambah;

        die;
    }
}

Ok, let’s check clientAction response 🙂
kalau berhasil, maka akan menampilkan angka 52 , karena kita memanggil function penambahan_data dengan input parameter 45 dan 7.

Referensi :
http://blog.ekini.net/2009/05/21/zend-framework-zend_soap-create-a-web-service/
http://makvin-it.com/
http://framework.zend.com

jQuery : Ajax Multi Window Modal using jQueryUI

Posted in Javascript by samsonasik on June 7, 2010

jQueryUI adalah bundle untuk low-level abstraction jQuery library untuk kebutuhan interaksi dan efek. jQueryUI mempunyai banyak theme yang bisa kita pilih serta kita modifikasi sesuai kebutuhan.

Pada kesempatan kali ini, saya akan mencoba memaparkan tentang Ajax Multi Window Modal dengan jQueryUI. Untuk yang terbiasa memakai prototype javascript Framework tentulah telah terbiasa dengan multi windownya. Bagaimana dengan jQuery ? Saya pernah discuss dengan salah satu senior saya di kantor saya dulu, kalau untuk jQuery, kita memang harus pintar-pintar memilah mana yang cocok untuk dipakai ( karena ke-OpenSource-annya , banyak developer-developer yang mengembangkan plugin-plugin yang tentu tidak termonitor dengan baik dari sisi kualitasnya – baca : salah satu kelemahan open source,- kalau untuk kelebihan opensource tentu tidak perlu kita bicarakan di sini 🙂 ). jQueryUI adalah salah satu bundle library yang sangat saya rekomendasikan untuk dipakai karena dikembangkan dengan jQuery’s event-driven architecture

Ok, let’s begin.
Pertama, kita download dulu jQueryUI nya. Setelah itu, kita bisa pilah folder-folder dalam development bundle yang telah kita download tadi. Kita hanya butuh library jQuery nya, kemudian folder external, themes, dan ui, setelah itu baiknya kita kelompokkan dalam satu folder khusus. seperti berikut.

Dari gambar di atas, ceritanya index.html adalah file utama yang akan menampilkan halaman-halaman lain dalam bentuk window modal, loaded.html adalah isi window pertama yang akan ditampilkan, dan loaded2.html adalah isi window kedua yang akan ditampilkan.
Nah, setelah kita siapkan file-file di atas, saatnya coding 😀

<script type="text/javascript" src="jquery-1.4.2.js"></script>
<link type="text/css" href="jqueryUI/themes/start/jquery.ui.all.css" rel="stylesheet" />
<script type="text/javascript" src="jqueryUI/external/jquery.bgiframe-2.1.1.js.js"></script>
<script type="text/javascript" src="jqueryUI/ui/jquery.ui.core.js"></script>
<script type="text/javascript" src="jqueryUI/ui/jquery.ui.widget.js"></script>
<script type="text/javascript" src="jqueryUI/ui/jquery.ui.mouse.js"></script>
<script type="text/javascript" src="jqueryUI/ui/jquery.ui.draggable.js"></script>
<script type="text/javascript" src="jqueryUI/ui/jquery.ui.position.js"></script>
<script type="text/javascript" src="jqueryUI/ui/jquery.ui.resizable.js"></script>
<script type="text/javascript" src="jqueryUI/ui/jquery.ui.dialog.js"></script>
<script type="text/javascript">
//variable for options value of window
var dialogOpt1,dialogOpt2 = {};
//variable check if popop opened
var setpopup1,setpopup2 = false;
//for popup1
function setOpts1(tinggi,lebar,judul,url)
{
 //reset...
 setpopup1 = true;

 //set options
 dialogOpt1 = {
 bgiframe: true,
 modal: true,
 autoOpen: false,
 height:tinggi,
 width:lebar,
 draggable: true,
 resizeable: true,
 title:judul
 };

 //assign idwindow
 $("#example").dialog(dialogOpt1);
 $("#example").load(url, [], function(){
 $("#example").dialog("open");
 }
 );
}

//for popup2
function setOpts2(tinggi,lebar,judul,url)
{
 //reset...
 setpopup2 = true;

 //set options
 dialogOpt2 = {
 bgiframe: true,
 modal: true,
 autoOpen: false,
 height:tinggi,
 width:lebar,
 draggable: true,
 resizeable: true,
 title:judul
 };

 //assign idwindow
 $("#example2").dialog(dialogOpt2);
 $("#example2").load(url, [], function(){
 $("#example2").dialog("open");
 }
 );
}

$(document).ready(function(){
 //for auto center windows if page is long
 $(window).bind('scroll', function() {
 dialogOpt1.position  = 'center';
 dialogOpt2.position  = 'center';
 if (setpopup1==true && $(".ui-dialog").css("display")!="none" )  $("#example").dialog(dialogOpt1);
 if (setpopup2==true && $(".ui-dialog").css("display")!="none" )  $("#example2").dialog(dialogOpt2);
 });
});
</script>

<input type="button" value="show" onclick="setOpts1(400,900,'First Content','loaded.html');"/>
<div id="example"></div>
<div id="example2"></div>

Kalau sudah, kita siapkan file dengan content yang akan dipanggil.
a. loaded.html ( file pertama yg diload / popup window modal pertama )

<input type="button" id="showdialog2" value="show" onclick="setOpts2(200,400,'Second Content','loaded2.html');"/>
First Modal

b. loaded2.html ( file kedua yg diload / popup window modal kedua)

Second Modal.

Ok, kalau sudah, tinggal kita test, sehingga tampil seperti berikut :