<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ThePhpEnterprise.Com</title>
	<atom:link href="http://www.thephpenterprise.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.thephpenterprise.com</link>
	<description>Use PHP for Enterprise Software</description>
	<lastBuildDate>Sat, 26 Dec 2009 02:36:36 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>PHP Enterprise Development by Ivo Jansch (ibuildings)</title>
		<link>http://www.thephpenterprise.com/2009/09/06/php-enterprise-development-by-ivo-jansch-ibuildings/</link>
		<comments>http://www.thephpenterprise.com/2009/09/06/php-enterprise-development-by-ivo-jansch-ibuildings/#comments</comments>
		<pubDate>Sun, 06 Sep 2009 04:18:19 +0000</pubDate>
		<dc:creator>Agus</dc:creator>
				<category><![CDATA[Best Practise]]></category>
		<category><![CDATA[enterprise]]></category>
		<category><![CDATA[ivo jansch]]></category>

		<guid isPermaLink="false">http://www.thephpenterprise.com/?p=89</guid>
		<description><![CDATA[Berikut ini ada slide bertajuk &#8220;PHP Enterprise Development&#8221; oleh Ivo Jansch (CTO IBuildings.Com). Slide tersebut menjelaskan step by step bagaimana menggunakan PHP untuk membangun Enterprise Application Software
Enterprise PHP (php&#124;works 2008)
View more documents from Ivo Jansch.

]]></description>
			<content:encoded><![CDATA[<p>Berikut ini ada slide bertajuk &#8220;PHP Enterprise Development&#8221; oleh Ivo Jansch (CTO IBuildings.Com). Slide tersebut menjelaskan step by step bagaimana menggunakan PHP untuk membangun Enterprise Application Software</p>
<div style="width:425px;text-align:left" id="__ss_786111"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/ijansch/enterprise-php-phpworks-2008-presentation" title="Enterprise PHP (php|works 2008)">Enterprise PHP (php|works 2008)</a><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=phpworks-enterprise-php-1227605806710884-9&#038;rel=0&#038;stripped_title=enterprise-php-phpworks-2008-presentation" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=phpworks-enterprise-php-1227605806710884-9&#038;rel=0&#038;stripped_title=enterprise-php-phpworks-2008-presentation" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;">View more <a style="text-decoration:underline;" href="http://www.slideshare.net/">documents</a> from <a style="text-decoration:underline;" href="http://www.slideshare.net/ijansch">Ivo Jansch</a>.</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.thephpenterprise.com/2009/09/06/php-enterprise-development-by-ivo-jansch-ibuildings/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yii 1.0.4 is released</title>
		<link>http://www.thephpenterprise.com/2009/04/15/yii-104-is-released/</link>
		<comments>http://www.thephpenterprise.com/2009/04/15/yii-104-is-released/#comments</comments>
		<pubDate>Wed, 15 Apr 2009 02:12:48 +0000</pubDate>
		<dc:creator>Agus</dc:creator>
				<category><![CDATA[Framework]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[release]]></category>
		<category><![CDATA[yii]]></category>

		<guid isPermaLink="false">http://www.thephpenterprise.com/?p=82</guid>
		<description><![CDATA[Yii Framework versi 1.0.4 telah dirilis 5 April kemarin. Berikut pengumuman dari yiiframework.com:

We are proud to announce the release of Yii Framework v1.0.4!
In this release, we included about thirty feature enhancements and more than twenty bug fixes. We continue to improve the powerful ActiveRecord (AR) implementation in Yii. In particular, we added support for using [...]]]></description>
			<content:encoded><![CDATA[<p>Yii Framework versi 1.0.4 telah dirilis 5 April kemarin. Berikut pengumuman dari yiiframework.com:</p>
<blockquote><p>
We are proud to announce the release of Yii Framework v1.0.4!</p>
<p>In this release, we included about thirty feature enhancements and more than twenty bug fixes. We continue to improve the powerful ActiveRecord (AR) implementation in Yii. In particular, we added support for using SQL Server with AR (thanks to Christophe for his generous contribution). We also added a so-called STAT relation to facilitate aggregational queries in AR. Moreover, we enhanced AR so that it can be used for tables without primary keys and foreign keys. We added several new components, including a validator to check the existence of input data in a table, a Zend Data cache component and an eAccelerator cache component, and a cache dependency represented in terms of a PHP expression.</p>
<p>Please check the change log to learn about the complete list of changes.</p>
<p>We continue to make progress with translation of Yii documentation. In particular, the translation of the Guide to Polish and Indonesian are close to finish. Thanks to those who participated in Yii translation project.
</p></blockquote>
<p>Salam,<br />
Agus Suhartono<br />
ThePhpEnterprise.Com</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thephpenterprise.com/2009/04/15/yii-104-is-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mengenal Getter dan Setter Method dalam PHP.</title>
		<link>http://www.thephpenterprise.com/2009/04/07/mengenal-getter-dan-setter-method-dalam-php/</link>
		<comments>http://www.thephpenterprise.com/2009/04/07/mengenal-getter-dan-setter-method-dalam-php/#comments</comments>
		<pubDate>Tue, 07 Apr 2009 04:23:14 +0000</pubDate>
		<dc:creator>Agus</dc:creator>
				<category><![CDATA[Core PHP]]></category>
		<category><![CDATA[OOP]]></category>
		<category><![CDATA[getter]]></category>
		<category><![CDATA[method]]></category>
		<category><![CDATA[setter]]></category>

		<guid isPermaLink="false">http://www.thephpenterprise.com/?p=69</guid>
		<description><![CDATA[Dalam konsep pemrograman berorientasi objek, sebuah objek memiliki data dan perilaku. Data diimplementasikan sebagai variable (public) sedangkan perilaku diimplementasikan sebagai method (public). Data dalam objek juga sering disebut sebagai property, tetapi sering ada perbedaan mengenai properti (property) ini. Pada bahasa berbasiskan komponen seperti Delphi dan VB, properti (property) selain menyimpan data juga memiliki perilaku, karena [...]]]></description>
			<content:encoded><![CDATA[<p>Dalam konsep pemrograman berorientasi objek, sebuah objek memiliki data dan perilaku. Data diimplementasikan sebagai <em>variable (public)</em> sedangkan perilaku diimplementasikan sebagai <em>method (public)</em>. Data dalam objek juga sering disebut sebagai property, tetapi sering ada perbedaan mengenai properti (property) ini. Pada bahasa berbasiskan komponen seperti Delphi dan VB, properti (<em>property</em>) selain menyimpan data juga memiliki perilaku, karena ketika properti (<em>property</em>) ditetapkan ternyata ada proses yang dilakukan.<br />
<span id="more-69"></span><br />
Contok kasusnya adalah ketika kita menetapkan properti (<em>property</em>) Titel pada objek Form, sebagai berikut:</p>
<pre name="code" class="php">
objForm->Title = "Judul baru";
</pre>
<p>Maka akan terjadi perubahan juga di user interface, yang berarti terjadi suatu proses. Apakah dalam PHP mendukung fitur ini? Secara default tidak, tetapi PHP (versi 5) memiliki fitur interceptor yang bisa kita gunakan, yaitu __get dan __set.</p>
<h3>Interceptor __get()</h3>
<p>Interceptor __get() merupakan sebuah method yang akan dipanggil jika kode kita berusaha mengambil (get) variable sebuah objek, tetapi variable tersebut sebenarnya tidak ada. Berikut contohnya:</p>
<pre name="code" class="php">
class Person {
    function __get( $name ) {
        return "Anda mengakses property: " . get_class($this).".".$name;
    }
}

$person = new Person();
echo $person->nama;
echo "";
echo $person->umur;
</pre>
<p>Jika Anda menjalankan script di atas maka akan menghasilkan:</p>
<pre name="code" class="php">
Anda mengakses property: Person.nama
Anda mengakses property: Person.umur
</pre>
<p>Sekarang sudah faham kan?</p>
<p>Nah dengan menggunakan method __get ini kita bisa mendelegasikan sebuah property ke sebuah method tertentu. Kita akan menggunakan konvensi yang digunaan di dunia Java, yaitu sebuah method getter selalu diawali dengan kata get. Berikut kode lengkapnya:</p>
<pre name="code" class="php">
class Person {
    function __get( $name )
    {
        $getter='get'.$name;
        if ( method_exists($this,$getter) ) {
            return $this->$getter(); // call getter method
        } else {
            // error handling
        }
    }

    function getName()
    {
        return "Ahmad Alif Abdillah";
    }

    function getAge()
    {
        return 4;
    }
}

$person = new Person();
echo "Nama : " . $person->name;
echo "";
echo "Umur : " . $person->age;
</pre>
<p>Hasilnya adalah:</p>
<pre name="code" class="php">
Nama : Ahmad Alif Abdillah
Umur : 4
</pre>
<h3>Interceptor __set()</h3>
<p>Interceptor __set() merupakan sebuah method yang akan dipanggil jika kode kita berusaha menetapkan (set) nilai variable sebuah objek, tetapi variable tersebut sebenarnya tidak ada. Berikut contohnya:</p>
<pre name="code" class="php">
class Person {
    function __set( $name, $value )
    {
        echo "Anda menetapkan nilai property: " . get_class($this).".".$name;
    }
}

$person = new Person();
$person->nama = "Ahmad Alif Abdillah";
echo "";
$person->umur = 4;
</pre>
<p>Hasilnya adalah:</p>
<pre name="code" class="php">
Anda menetapkan nilai property: Person.nama
Anda menetapkan nilai property: Person.umur
</pre>
<p>Sebagaimana method __get, kita juga bisa mendelegasikan penetapan sebuah property kepada sebuah method setter. Konvensi yang akan kita gunakan adalah setiap method setter selalu diawali kata set. Berikut contoh kode lengkapnya:</p>
<pre name="code" class="php">
class Person {
    private $_name;
    private $_age;    

    function __set( $name, $value )
    {
        $setter='set'.$name;
        if(method_exists($this,$setter)) {
            $this->$setter($value); // call setter method
        } else {
            // error handling
        }
    }

    function setName( $name ) {
        $this->_name = $name;
        if ( ! is_null( $name ) ) {
            $this->_name = strtoupper($this->_name);
        }
    }

    function setAge( $age ) {
        $this->_age =  strtoupper($age);
    }
}
</pre>
<p>Pemanfaatan interceptor __get() dan __set() lebih lanjut misalnya digunakan dalam mengakses database. Sebagai contoh, kita bisa mengakses field-field sebuah table seperti memanggil property objek saja.</p>
<pre name="code" class="php">
$record->nama;
$record->umur;
</pre>
<p>Pembaca yang budiman, penjelasan singkat ini semoga bisa memperluas cakrawala kita semua, bahwa sebeturnya fitur OOP dalam PHP sudah cukup tangguh, rugi kalau nggak dimanfaatkan.</p>
<p>Agus Suhartono</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thephpenterprise.com/2009/04/07/mengenal-getter-dan-setter-method-dalam-php/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Pola Desain (Design Pattern) Apa dan Mengapa?</title>
		<link>http://www.thephpenterprise.com/2009/04/06/pola-desain-design-pattern-apa-dan-mengapa/</link>
		<comments>http://www.thephpenterprise.com/2009/04/06/pola-desain-design-pattern-apa-dan-mengapa/#comments</comments>
		<pubDate>Sun, 05 Apr 2009 22:51:53 +0000</pubDate>
		<dc:creator>Agus</dc:creator>
				<category><![CDATA[Design Pattern]]></category>
		<category><![CDATA[christopher alexander]]></category>
		<category><![CDATA[grady booch]]></category>
		<category><![CDATA[the gang of four]]></category>

		<guid isPermaLink="false">http://www.thephpenterprise.com/?p=45</guid>
		<description><![CDATA[Pola desain (design pattern) telah menjadi suatu hal yang penting dalam dunia rekayasa perangkat lunak (software engineering) saat ini. Keberadaannya telah menjadikan sebuah acuan apakah suatu perangkat lunak (software) dibuat dengan baik ataukah tidak. Dia juga membantu para arsitektur dalam mendesain sebuah perangkat lunak (software). Apakah pola desain (design pattern) itu? Dan mengapa begitu penting? [...]]]></description>
			<content:encoded><![CDATA[<p>Pola desain (design pattern) telah menjadi suatu hal yang penting dalam dunia rekayasa perangkat lunak (<em>software engineering</em>) saat ini. Keberadaannya telah menjadikan sebuah acuan apakah suatu perangkat lunak (software) dibuat dengan baik ataukah tidak. Dia juga membantu para arsitektur dalam mendesain sebuah perangkat lunak (software). Apakah pola desain (design pattern) itu? Dan mengapa begitu penting? Silahkan simak artikel ini.<br />
<span id="more-45"></span></p>
<h3>Apakah Design Pattern Itu?</h3>
<p>Berikut ini beberapa definisi pola desain (design pattern) menurut beberapa tokoh:</p>
<p><em>In the world of software,apattern is atangible manifestation of an organization’s tribal<br />
memory.</em><br />
<strong>—Grady Booch in Core J2EE Patterns</strong></p>
<p><em>[A pattern is] asolution to aproblem in acontext.</em><br />
<strong>—The Gang of Four, Design Patterns:Elements of Reusable Object-Oriented Software</strong></p>
<p><em>&#8220;Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice&#8221;</em> <strong>—Christopher Alexander</strong></p>
<p><em>Design pattern</em> merupakan solusi yang bisa dipakai-ulang yang bersifat umum yang berguna untuk menyelesaikan masalah yang umum terjadi di bidang rekayasa perangkat lunak (software engineering).</p>
<p>Ilustransinya seperti ini: Anda seorang pengembang software, suatu saat menemukan masalah dan kemudian<br />
anda mempunyai desin solusi untuk masalah Anda tersebut. Kemudian Anda menemukan masalah yang sama atau<br />
mirip pada proyek-proyek selanjutnya, maka Anda dapat menggunakan desain yang pernah Anda pakai sebelumnya. Desain Anda inilah yang disebut sebagai pola desain (<em>design pattern</em>). Ketika Anda mempublikasikan pola desain Anda tersebut, orang lainpun dapat menggunakannya.</p>
<p>Karena pola desain (design pattern) merupakan desain objek serta hubungan antar objek, maka pola desain (design pattern) tidak tergantung dengan bahasa tertentu. Bahasa pemrograman yang sudah mendukung OOP akan bisa mengimplementasikan desaign pattern ini, tak terkecuali PHP).</p>
<p>Di sini lah, mengapa design pattern itu penting, kita bisa menggunakan desain dari problem yang pernah dihadapi<br />
oleh para developer berkualitas.</p>
<h3>Mengapa Menggunakan Pola Desain (Design Pattern)?</h3>
<p><strong>Pola Desain (<em>Design Pattern</em>) Mendefinisikan Masalah</strong><br />
Suatu saat Anda mungkin berada suatu tahap dimana proyek Anda tidak mengalami kemajuan. Kemudian Anda perlu melacak balik suatu jalan untuk memulai kembali.</p>
<p>Dengan mendefinisikan masalah umum, pola yang dapat membantu Anda untuk meningkatkan desain. Kadang-kadang, langkah awal untuk solusi adalah mengakui bahwa anda mempunyai masalah.</p>
<p><strong>Pola Desain (<em>Design Pattern</em>) Mendefinisikan Solusi</strong><br />
Jika Anda sudah menetapkan masalah Anda menjadi masalah yang benar, maka Anda dapat mencari solusi dari pola-pola desain yang sudah ada, tentu saja dengan analisa konsekuansi pemakaian pola tersebut.</p>
<p>Yang perlu diingat, Anda tidak bisa berlepas-tangan dari keputusan untuk menggunakan pola desain <em>desaign pattern</em>) tertentu dengan segala implikasinya. Bagaimanapun juga Anda telah menggunakan teknik yang sudah dicoba dan diuji.</p>
<p><strong>Pola Desain (<em>Design Pattern</em>) Tidak Tergantung dengan Bahasa Tertentu</strong><br />
Pola (<em>pattern</em>) mendefinisikan objek dan solusi dalam hal berorientasi objek. Hal ini berarti bahwa banyak pola berlaku di lebih dari satu bahasa. Pola dapat membantu Anda saat Anda bergerak di antara bahasa.<br />
Dengan kata lain, aplikasi yang dibangun dengan prinsip-prinsip desain berorientasi objek yang baik, relatif lebih mudah jika Anda ingin mengganti (porting) dengan bahasa lain.</p>
<p><strong>Pola Desain (<em>Design Pattern</em>) Mendefinisikan Kosa-kata</strong><br />
Mungkin Anda pernah membaca kode yang mempunyai nama kelas (class) yang mengandung kata-kata berikut:<br />
Facade, Factory, Singleton, Proxy, Adapter, dll. Kata-kata tersebut menunjukkan pola desain apa yang dipakai.<br />
Hal ini akan memudahkan jika ada pengembang lain yang berusaha memahami sebuah kode program.</p>
<p><strong>Pola Desain (<em>Design Pattern</em>) Sudah Dicoba dan Diuji.</strong><br />
Inilah yang menyenangkan, pola-pola yang ada pada umumnya dibuat oleh pakar-pakar dibidangnya ketika menyelesaikan masalah tertentu, dan tentu saja sudah dicoba dan diuji. Dengan menggunakan pola desain yang sudah ada, kita telah menghemat sumber-daya, karena kalau kita yang mencari pola-pola tersebut tentu saja akan memakan biaya yang tidak sedikit.</p>
<p><strong>Pola Desain (<em>Design Pattern</em>) Mempromosikan Desain yang Bagus</strong><br />
Pola desain(desain pattern) menunjukkan dan menerapkan prinsip-prinsip desain yang berorientasi objek. Sehingga kajian pola desain dapat menghasilkan lebih dari solusi yang spesifik dalam konteks. Anda bisa masuk dengan<br />
perspektif baru pada cara dimana objek dan kelas-kelas dapat dipadukan untuk mencapai suatu tujuan.</p>
<p>Demikian, smoga bermanfaat</p>
<p><a href="http://agus.suhartono.net">Agus Suhartono</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.thephpenterprise.com/2009/04/06/pola-desain-design-pattern-apa-dan-mengapa/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Refactoring: Sebuah Pengenalan</title>
		<link>http://www.thephpenterprise.com/2009/04/02/refactoring-sebuah-pengenalan/</link>
		<comments>http://www.thephpenterprise.com/2009/04/02/refactoring-sebuah-pengenalan/#comments</comments>
		<pubDate>Thu, 02 Apr 2009 09:30:37 +0000</pubDate>
		<dc:creator>Agus</dc:creator>
				<category><![CDATA[Best Practise]]></category>
		<category><![CDATA[refactoring]]></category>

		<guid isPermaLink="false">http://www.thephpenterprise.com/?p=22</guid>
		<description><![CDATA[Refactoring adalah perbaikan desain dari kode yang sudah ada.
Dalam Refactoring tidak menambah fitur, melainkan hanya memindah,
memecah, menggabung, menghapus dan mengganti nama kode yang sudah ada.
Tujuannya supaya kualitas kode lebih baik.

Dalam pengenalan ini saya akan menyajikan contoh kasus refactoring.
Pada aplikasi penjualan ada dua object, yaitu Sales dan SalesItem.
Sales menyimpan informasi transaksi penjualan, sedangkan SalesItem detil transaksinya.
Kedua [...]]]></description>
			<content:encoded><![CDATA[<p>Refactoring adalah perbaikan desain dari kode yang sudah ada.<br />
Dalam Refactoring tidak menambah fitur, melainkan hanya memindah,<br />
memecah, menggabung, menghapus dan mengganti nama kode yang sudah ada.<br />
Tujuannya supaya kualitas kode lebih baik.<br />
<span id="more-22"></span><br />
Dalam pengenalan ini saya akan menyajikan contoh kasus refactoring.<br />
Pada aplikasi penjualan ada dua object, yaitu Sales dan SalesItem.<br />
Sales menyimpan informasi transaksi penjualan, sedangkan SalesItem detil transaksinya.</p>
<p>Kedua object tersebut didefinisikan dalam class sebagai berikut:</p>
<pre name="code" class="php">

// PHP5
class SalesItem {
    public $price = 0;
    public $quantity = 0;
}

class Sales {
    protected $items = array();

    public function addItem($item)
    {
        $this-&gt;items[] = $item;
    }

    public function calcTotal()
    {
        $total = 0;
        // add totals for each item
        foreach($this-&gt;items as $item) {
            $total += $item-&gt;price * $item-&gt;quantity;
        }
        // add sales tax
        $total *= 1.07;
        return $total;
    }
}
</pre>
<p>Perhatikan kode dalam method calcTotal(), ada dua hal yang perlu di <em>refactoring</em> yaitu total item dan rumus  perhitungan pajak (tax). Kita perlu menambah dua method dalam object Sales sebagai berikut:</p>
<pre name="code" class="php">
protected function itemTotal($item)
{
    return $item-&gt;price * $item-&gt;quantity;
}

protected function calcSalesTax($amount)
{
    return $amount * 0.07;
}
</pre>
<p>Kemudian method calcTotal() kita sederhanakan menjadi berikut:</p>
<pre name="code" class="php">
public function calcTotal()
{
    $total = 0;
    foreach($this-&gt;items as $item) {
        $total += $this-&gt;itemTotal($item);
    }
    $total += $this-&gt;calcSalesTax($total);
    return $total;
}
</pre>
<p>Perhatikan, method itemTotal() melakukan perhitungan dengan variable yang ada di object SalesItem.<br />
Sudah selayaknya mothod itemTotal() kita pindah ke class SalesItem dengan nama method &#8216;total&#8217; saja.</p>
<pre name="code" class="php">
public function total()
{
    return $this-&gt;price * $this-&gt;quantity;
}
</pre>
<p>Kode dalam method calcTotal menjadi lebih sederhana, sebagai berikut:</p>
<pre name="code" class="php">
public function calcTotal()
{
    $total = 0;
    foreach($this-&gt;items as $item) {
        $total += $item-&gt;total();
    }
    $total += $this-&gt;calcSalesTax($total);
    return $total;
}
</pre>
<p>Berikut adalah hasil akhir dari kedua class tersebut:</p>
<pre name="code" class="php">
class SalesItem {
    public $price = 0;
    public $quantity = 0;

    public function total()
    {
        return $this-&gt;price * $this-&gt;quantity;
    }
}

class Sales {
    protected $items = array();
    public function addItem($item)
    {
        $this-&gt;items[] = $item;
    }

    protected function calcSalesTax($amount)
    {
        return $amount * 0.07;
    }

    public function calcTotal()
    {
        $total = 0;
        foreach($this-&gt;items as $item) {
            $total += $item-&gt;total();
        }
        $total += $this-&gt;calcSalesTax($total);
        return $total;
    }
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.thephpenterprise.com/2009/04/02/refactoring-sebuah-pengenalan/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pernikahan menyenangkan: PHP Jalan di Java Application Server</title>
		<link>http://www.thephpenterprise.com/2009/04/01/pernikahan-menyenangkan-php-jalan-di-java-application-server/</link>
		<comments>http://www.thephpenterprise.com/2009/04/01/pernikahan-menyenangkan-php-jalan-di-java-application-server/#comments</comments>
		<pubDate>Wed, 01 Apr 2009 07:10:50 +0000</pubDate>
		<dc:creator>Agus</dc:creator>
				<category><![CDATA[Application Server]]></category>
		<category><![CDATA[enterprise]]></category>
		<category><![CDATA[glashfish]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[java application server]]></category>
		<category><![CDATA[quercus]]></category>

		<guid isPermaLink="false">http://www.thephpenterprise.com/?p=15</guid>
		<description><![CDATA[
Berita menggembirakan, ada sebuah engine, yang dinamakan Quercus, yang menjadikan PHP akan dapat dijalankan di Java Application Server. Quercus mendukung PHP versi 5.
Ini yang sangat menggembirakan :

1. With Quercus, PHP applications automatically take advantage of Java application server features just as *connection pooling* and *clustered sessions*.

Yupe, dengan fitur “connection pooling” aplikasi nggak harus membuat koneksi [...]]]></description>
			<content:encoded><![CDATA[<p><span class="Apple-style-span" style="border-collapse: separate; color: #333333; font-family: Verdana; font-size: 11px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 17px; orphans: 2; text-align: justify; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"></p>
<p style="margin: 10px 0px;">Berita menggembirakan, ada sebuah engine, yang dinamakan<span class="Apple-converted-space"> </span><a style="color: #0d6aa6; text-decoration: none;" href="http://quercus.caucho.com/" target="_blank">Quercus</a>, yang menjadikan PHP akan dapat dijalankan di Java Application Server. Quercus mendukung PHP versi 5.</p>
<p style="margin: 10px 0px;"><span id="more-15"></span>Ini yang sangat menggembirakan :</p>
<blockquote style="border-left: 5px solid #b0c4de; margin: 5px 0px 5px 20px; padding: 0px 0px 0px 10px; color: #000000; font-size: 1em; line-height: 1.2em;">
<p style="margin: 10px 0px;">1. With Quercus, PHP applications automatically take advantage of Java application server features just as *connection pooling* and *clustered sessions*.</p>
</blockquote>
<p style="margin: 10px 0px;">Yupe, dengan fitur “connection pooling” aplikasi nggak harus membuat koneksi baru ke database, tetapi menggunakan koneksi yang sudah ada yang sedang tidak digunakan. Hal ini menjadikan beban network dan database menjadi lebih ringan. Sedangkan “clustered sessions” akan menjadikan aplikasi yang dibuat dengan PHP mendukung clustering.</p>
<blockquote style="border-left: 5px solid #b0c4de; margin: 5px 0px 5px 20px; padding: 0px 0px 0px 10px; color: #000000; font-size: 1em; line-height: 1.2em;">
<p style="margin: 10px 0px;">2. Quercus presents a new mixed Java/PHP approach to web applications and services where Java and PHP tightly integrate with each other. PHP applications can choose to use Java libraries and technologies like JMS, EJB, SOA frameworks, Hibernate, and Spring. This revolutionary capability is made possible because 1) PHP code is interpreted/compiled into Java and 2) Quercus and its libraries are written entirely in Java. This architecture allows PHP applications and Java libraries to talk directly with one another at the program level. To facilitate this new Java/PHP architecture, Quercus provides and API and interface to expose Java libraries to PHP.</p>
</blockquote>
<p style="margin: 10px 0px;">Sebuah fitur yang luar biasa, bagaimana tidak, jika aplikasi yang dibuat dengan PHP bisa menggunakan library yang dibuat dengan Java seperti JMS, EJB, SOA, Hibernate dan Spring. Akhirnya Java telah membuka diri, untuk tidak hanya Java language saja yang bisa jalan di lingkungan Java Framework.</p>
<p style="margin: 10px 0px;">Bagi saya ini berita mengembirakan, karena sebelum menggeluti java, saya terlebih dulu bermain-main dengan PHP. So, sebuah pernikahan yang menyenangkan.</p>
<p style="margin: 10px 0px;">Agus Suhartono</p>
<p style="margin: 10px 0px;">Referensi:</p>
<p style="margin: 10px 0px;">1. http://quercus.caucho.com/ (Official Website)<br />
2. http://weblogs.java.net/blog/ludo/archive/2007/03/100_java_quercu.html (contoh instalasi Quercus di Glassfish.</p>
<p></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.thephpenterprise.com/2009/04/01/pernikahan-menyenangkan-php-jalan-di-java-application-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP, Enterprise Application dan Namespace/Package</title>
		<link>http://www.thephpenterprise.com/2009/04/01/php-enterprise-application-dan-namespacepackage/</link>
		<comments>http://www.thephpenterprise.com/2009/04/01/php-enterprise-application-dan-namespacepackage/#comments</comments>
		<pubDate>Wed, 01 Apr 2009 07:06:03 +0000</pubDate>
		<dc:creator>Agus</dc:creator>
				<category><![CDATA[Core PHP]]></category>
		<category><![CDATA[OOP]]></category>
		<category><![CDATA[enterprise]]></category>
		<category><![CDATA[namespace]]></category>

		<guid isPermaLink="false">http://www.thephpenterprise.com/?p=11</guid>
		<description><![CDATA[PHP merupakan bahasa pemrograman yang memulai memanjat sebagai bahasa yang bisa digunakan untuk membuat Enterprise Application. Mulai PHP5 (PHP versi 5) konsep Object Oriented Programming telah ditingkatkan cukup banyak. Benarkah PHP siap menjadi Enterprise Language? Saya tidak menjawab ya atau tidak, tetapi keberadaan application framework semacam Zend Framework dan Prodo Framework paling tidak telah dipersiapkan [...]]]></description>
			<content:encoded><![CDATA[<p>PHP merupakan bahasa pemrograman yang memulai memanjat sebagai bahasa yang bisa digunakan untuk membuat Enterprise Application. Mulai PHP5 (PHP versi 5) konsep Object Oriented Programming telah ditingkatkan cukup banyak. Benarkah PHP siap menjadi Enterprise Language? Saya tidak menjawab ya atau tidak, tetapi keberadaan application framework semacam Zend Framework dan Prodo Framework paling tidak telah dipersiapkan untuk menjawab tantangan itu.<br />
<span id="more-11"></span><br />
Tetapi ada sebuah hal yang cukup menggangu bagi pengembang dalam menggunakan PHP untuk membangun Enterprise Application, yaitu namespace. Sebuah Enterprice Application akan membutuhkan banyak kode sehingga membutuhkan pengorganisasian kode yang baik. Aplikasi akan terdiri dari banyak class, dimana class-class ini perlu dikelompokkan menjadi beberapa package. Sangat mungkin sebuah package berasal dari pihak ke tiga. Nah fungsi namespace adalah untuk mengidentifikasikan packege-packege supaya tidak terjadi benturan nama class yang disebabkan struktur aplikasi yang skala besar. (Untuk memahami konsep Namespace lebih lanjut, Anda dapat membaca bukunya Robert C. Martin, ‘Agile Software Development. Principles, Patterns, and Practice’ yang diterbitkan Prentice Hall, 2003.)</p>
<p>Dalam Java, namespace identik dengan package dan menggunakan keyword ‘package’ untuk mendefinisikannya. Sedangkan C# (.Net) menggunakan keyword dengan nama yang sama, yaitu ‘namespace’.</p>
<p>Contoh kasus manfaat namespace dalam java dapat ditemui package java.sql dan java.util. Kedua package tersebut sama-sama memiliki class Date. Jika Anda hanya menggunakan salah satu package saja, maka Anda dapat membuat object Date sebagai berikut:</p>
<pre lang="java">Date now = new Date();</pre>
<p>Tetapi jika kedua package tersebut Anda gunakan bersama-sama, maka kode di atas akan mengalami error karena ada dua (2) class yang bernama sama. Nah disinilah manfaat namespace, sehingga Anda dapat membuat object Date dari package java.util sebagai berikut:</p>
<pre lang="php">java.util.Date now = new java.util.Date();</pre>
<p>Nah bagaimana jika Anda menggunakan PHP, kemudian menggunakan dua buah package library yang mempunyai nama class yang sama? Konon PHP6 akan mempunyai fitur namespace, tapi kita belum bisa berharap banyak karena belum tahu kapan versi stabil nya keluar. Solusi yang disarankan adalah dengan melakukan perubahan tata-cara penamaan class. Kita dapat menamakan sebuah class seperti memberi nama namespace, sebagai berikut:</p>
<p>1. Nama class diawali dengan nama perusahaan pembuat<br />
2. Setelah nama perusahaan dilanjutkan nama paket (package).<br />
3. Jika ada sub-package, dilanjutkan dengan memberi nama sub-package<br />
4. Terakhir adalah nama class sebenarnya (jika tidak diberi awalan namespace).<br />
5. Antara nama perusahaan, package, sub-package dan ‘original class name’ dipisah dengan karakter “_” menggantikan karakter “.” yang lazim dipakai dalam menamakan namespace.</p>
<p>Contoh yang baik telah diterapkan pada Zend Framework. Zend memberi nama class untuk Lucene dalam package Search dengan Zend_Search_Lucene. Berikut petikan kodenya:</p>
<pre lang="php">/**
* Zend Framework
*
* LICENSE
*
* This source file is subject to version 1.0 of the Zend Framework
* license, that is bundled with this package in the file LICENSE, and
* is available through the world-wide-web at the following URL:
* http://www.zend.com/license/framework/1_0.txt. If you did not receive
* a copy of the Zend Framework license and are unable to obtain it
* through the world-wide-web, please send a note to license@zend.com
* so we can mail you a copy immediately.
*
* @package Zend_Search_Lucene
* @copyright Copyright (c) 2005-2006 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://www.zend.com/license/framework/1_0.txt Zend Framework License version 1.0
*/

/** Zend_Search_Lucene_Exception */
require_once 'Zend/Search/Lucene/Exception.php';

/** Zend_Search_Lucene_Document */
require_once 'Zend/Search/Lucene/Document.php';

/** Zend_Search_Lucene_Storage_Directory */
require_once 'Zend/Search/Lucene/Storage/Directory/Filesystem.php';

/** Zend_Search_Lucene_Index_Term */
require_once 'Zend/Search/Lucene/Index/Term.php';

/** Zend_Search_Lucene_Index_TermInfo */
require_once 'Zend/Search/Lucene/Index/TermInfo.php';

/** Zend_Search_Lucene_Index_SegmentInfo */
require_once 'Zend/Search/Lucene/Index/SegmentInfo.php';

/** Zend_Search_Lucene_Index_FieldInfo */
require_once 'Zend/Search/Lucene/Index/FieldInfo.php';

/** Zend_Search_Lucene_Index_Writer */
require_once 'Zend/Search/Lucene/Index/Writer.php';

/** Zend_Search_Lucene_Search_QueryParser */
require_once 'Zend/Search/Lucene/Search/QueryParser.php';

/** Zend_Search_Lucene_Search_QueryHit */
require_once 'Zend/Search/Lucene/Search/QueryHit.php';

/** Zend_Search_Lucene_Search_Similarity */
require_once 'Zend/Search/Lucene/Search/Similarity.php';

class Zend_Search_Lucene
{
...
...
...
}

?>
</pre>
<p>Nah apakah Anda sudah siap dengan PHP Enterprise?</p>
<p>Jabat erat selalu,</p>
<p>Agus Suhartono</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thephpenterprise.com/2009/04/01/php-enterprise-application-dan-namespacepackage/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zend Framework 1.7.8 Released</title>
		<link>http://www.thephpenterprise.com/2009/04/01/zend-framework-178-released/</link>
		<comments>http://www.thephpenterprise.com/2009/04/01/zend-framework-178-released/#comments</comments>
		<pubDate>Wed, 01 Apr 2009 06:56:46 +0000</pubDate>
		<dc:creator>Agus</dc:creator>
				<category><![CDATA[Framework]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[zend framework]]></category>

		<guid isPermaLink="false">http://www.thephpenterprise.com/?p=7</guid>
		<description><![CDATA[ramework 1.7.8! You can download this new mini release from the ZF download site:
http://framework.zend.com/download/latest/
A list of all issues resolved in this release can be found at:
http://framework.zend.com/issues/secure/IssueNavigator.jspa?requestId=1099
]]></description>
			<content:encoded><![CDATA[<p>ramework 1.7.8! You can download this new mini release from the ZF download site:</p>
<p><a title="http://framework.zend.com/download/latest/" href="http://framework.zend.com/download/latest/" target="_blank">http://framework.zend.com/download/latest/</a></p>
<p>A list of all issues resolved in this release can be found at:</p>
<p><a title="http://framework.zend.com/issues/secure/IssueNavigator.jspa?requestId=1099" href="http://framework.zend.com/issues/secure/IssueNavigator.jspa?requestId=1099" target="_blank">http://framework.zend.com/issues/secure/IssueNavigator.jspa?requestId=1099</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.thephpenterprise.com/2009/04/01/zend-framework-178-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Selamat datang di ThePhpEnterprise.Com</title>
		<link>http://www.thephpenterprise.com/2009/03/30/hello-world/</link>
		<comments>http://www.thephpenterprise.com/2009/03/30/hello-world/#comments</comments>
		<pubDate>Sun, 29 Mar 2009 17:07:33 +0000</pubDate>
		<dc:creator>Agus</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://thephpenterprise.com/?p=1</guid>
		<description><![CDATA[Situs ini akan membahas penggunaan PHP dalam ranah enterprise application. Smoga bermanfaat
]]></description>
			<content:encoded><![CDATA[<p>Situs ini akan membahas penggunaan PHP dalam ranah enterprise application. Smoga bermanfaat</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thephpenterprise.com/2009/03/30/hello-world/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
