<?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>TeknoJurnal &#187; framework</title>
	<atom:link href="http://www.teknojurnal.com/tag/framework/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.teknojurnal.com</link>
	<description>Your IT Development Guide</description>
	<lastBuildDate>Fri, 03 Feb 2012 12:00:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Sencha Touch 1.1 Kini Mendukung BlackBerry OS 6</title>
		<link>http://www.teknojurnal.com/2011/03/28/sencha-touch-1-1-kini-mendukung-blackberry-os-6/</link>
		<comments>http://www.teknojurnal.com/2011/03/28/sencha-touch-1-1-kini-mendukung-blackberry-os-6/#comments</comments>
		<pubDate>Mon, 28 Mar 2011 05:30:15 +0000</pubDate>
		<dc:creator>Putra Setia Utama</dc:creator>
				<category><![CDATA[TeknoNews]]></category>
		<category><![CDATA[blackberry]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[OS6]]></category>
		<category><![CDATA[sencha]]></category>
		<category><![CDATA[touch]]></category>

		<guid isPermaLink="false">http://www.teknojurnal.com/?p=5596</guid>
		<description><![CDATA[Senca Touch, sebuah framework untuk HTML, CSS3, dan Javascript yang akan mempermudah anda dalam membuat aplikasi mobile cross-platform untuk device yang berbasis touch screen, nampaknya mulai serius masuk ke pasar mobile dengan merilis versi terbarunya yaitu Sencha Touch 1.1. Saat ini Sencha touch sendiri memiliki kompatibilitas dengan Apple iOS, Android, dan juga Blackberry OS 6. Untuk OS terakhir, Sencha Touch 1.1 ini secara resmi dirilis pada 23 Maret 2011.]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.teknojurnal.com/wp-content/uploads/2011/03/sencha_logo.png"><img class="size-medium wp-image-5597 aligncenter" title="sencha logo" src="http://www.teknojurnal.com/wp-content/uploads/2011/03/sencha_logo-300x125.png" alt="sencha logo" width="300" height="125" /></a></p>
<p>Senca Touch, sebuah framework untuk HTML, CSS3, dan Javascript yang akan mempermudah anda dalam membuat aplikasi mobile cross-platform untuk device yang berbasis touch screen, nampaknya mulai serius masuk ke pasar mobile dengan merilis versi terbarunya yaitu Sencha Touch 1.1. Saat ini Sencha touch sendiri memiliki kompatibilitas dengan Apple iOS, Android, dan juga Blackberry OS 6. Untuk OS terakhir, Sencha Touch 1.1 ini secara resmi dirilis pada 23 Maret 2011.</p>
<div id="attachment_5598" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.teknojurnal.com/wp-content/uploads/2011/03/sencha-touch-1-1.jpg"><img class="size-medium wp-image-5598" title="sencha touch 1.1" src="http://www.teknojurnal.com/wp-content/uploads/2011/03/sencha-touch-1-1-300x214.jpg" alt="sencha touch 1.1" width="300" height="214" /></a><p class="wp-caption-text">Sencha Touch 1.1</p></div>
<h3><span style="color: #ff6600;">BlackBerry 6+ Support</span></h3>
<p>Dengan Sencha 1.1, kini anda dapat mengembangkan aplikasi untuk BlackBerry OS 6, serta BlackBerry Tablet OS pada BlackBerry Playbook. Pada Sencha 1.1 ini juga dikembangkan sebuah tool khusus yang dapat meningkatkan kinerja animasi untuk perangkat BlackBerry yang tidak memiliki GPU, seperti BlackBerry Torch. Selain itu di versi kali ini juga disediakan themes khusus untuk perangkat BlackBerry yang menggunakan &#8220;style&#8221; yang lebih &#8220;flat&#8221; dan juga mengoptimalkan penggunaan CSS3.</p>
<p>RIM, pembuat perangkat BlackBerry juga ikut bereaksi dengan munculnya Sencha Touch 1.1 ini dengan menawarkan <a href="http://us.blackberry.com/developers/blackberry6/torch_offer.jsp" target="_blank">10 BlackBerry Torch gratis ke 10 developer pertama</a> yang memasukkan aplikasi mereka yang tentunya dibuat dengan menggunakan Sencha Touch ke BlackBerry AppWorld.</p>
<h3><span style="color: #ff6600;">Fitur Baru: &#8220;Pull to Refresh &amp; Pagination&#8221;</span></h3>
<p><span style="color: #ff6600;"> </span></p>
<p style="text-align: center;"><a href="http://www.teknojurnal.com/wp-content/uploads/2011/03/pulltorefresh.gif"><img class="size-full wp-image-5599 aligncenter" title="pull to refresh" src="http://www.teknojurnal.com/wp-content/uploads/2011/03/pulltorefresh.gif" alt="pull to refresh" width="281" height="65" /></a></p>
<p>Di Sencha Touch 1.1 ini, juga diperkenalkan framework plugin resmi pertama mereka, tidak lupa juga disertakan sebuah contoh implementasinya yang cukup menarik. Yaitu Fitur yang berkaitan dengan User Experience yang biasanya dipakai di aplikasi iOS (termasuk Twitter dan juga FaceBook) , yaitu &#8220;pull to refresh&#8221;. Dengan mengaktifkan plugin ini dalam komponen &#8220;List&#8221;. Dengan Plugin ini pengguna apliaksi anda dapat melakukan &#8220;refresh&#8221; sebuah halaman list (contohnya timeline / wall di Facebook) hanya dengan menarik halaman tersebut ke bawah hingga titik tertentu dan kemudian melepasnya untuk mendapatkan data terbaru. Dan kesemuanya dilakukan hanya dengan memasukan beberapa baris code.</p>
<p>Fitur lainnya yang ditawarkan adalah &#8220;pagination&#8221;, untuk memudahkan dan mengoptimalkan pagination di aplikasi anda. Sama halnya dengan fitur plugin &#8220;pull to refresh&#8221; di &#8220;pagination&#8221; ini anda juga hanya memerlukan beberapa baris kode saja, karena sudah berbentuk plugin.</p>
<p>~</p>
<p>Beberapa demo terbaru juga turut disertakan di Sencha Touch 1.1 . Untuk melihat demo dari komponen tersebut anda bisa pergi ke <a href="http://dev.sencha.com/deploy/touch/examples/" target="_blank">link berikut</a>. Untuk Download Sencha 1.1 anda bisa <a href="http://www.sencha.com/products/touch/download/" target="_blank">download disini</a>. Atau anda ingin mencoba langsung di WebKit-based Browser anda bisa <a href="http://www.webkit.org/" target="_blank">klik di sini</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.teknojurnal.com/2011/03/28/sencha-touch-1-1-kini-mendukung-blackberry-os-6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Framework MVC &#8211; Apa Pengaruhnya Bagi Para Programmer?</title>
		<link>http://www.teknojurnal.com/2010/02/24/framework-mvc-apa-pengaruhnya-bagi-para-programmer/</link>
		<comments>http://www.teknojurnal.com/2010/02/24/framework-mvc-apa-pengaruhnya-bagi-para-programmer/#comments</comments>
		<pubDate>Wed, 24 Feb 2010 04:09:59 +0000</pubDate>
		<dc:creator>Firman Nugraha</dc:creator>
				<category><![CDATA[TeknoMind]]></category>
		<category><![CDATA[Aplikasi Desktop]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[model view controller]]></category>
		<category><![CDATA[mvc]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://www.teknojurnal.com/?p=798</guid>
		<description><![CDATA[Masih ingat saya ketika masa-masa saya masih maniak koding dari awal ketika membuat sebuah aplikasi. Hampir seluruh kodingan yang saya buat hanya menggunakan komponen-komponen dasar yang ada pada bahasa pemrograman tersebut, sedikit sekali saya memakai komponen eksternal atau tool pembantu. Pokoknya ngoding poll dari awal..... dan semua itu berubah semenjak saya mengenal framework MVC]]></description>
			<content:encoded><![CDATA[<div class="mceTemp">
<dl class="wp-caption alignleft" style="width: 182px;">
<dt class="wp-caption-dt"><img class="  " title="Nerd Programmer" src="http://www.funnyjunksite.com/wp-content/uploads/2007/08/programmer.jpg" alt="Nerd Programmer" width="172" height="164" /></dt>
</dl>
</div>
<p>Masih ingat saya ketika masa-masa saya masih maniak koding dari awal ketika membuat sebuah aplikasi. Hampir seluruh kodingan yang saya buat hanya menggunakan komponen-komponen dasar yang ada pada bahasa pemrograman tersebut, sedikit sekali saya memakai komponen eksternal atau tool pembantu. Pokoknya ngoding poll dari awal dan comot kodingan sana-sini dari internet dan ujung-ujungnya jadilah program gado-gado tanpa struktur yang jelas, saya sendiri pusing kalo disuruh ngeliat kodingan saya jaman dulu, waduh bikin mata serasa mau copot :nohope:</p>
<p>Teman sesama peneliti saya, <a href="http://www.teknojurnal.com/author/duodare/" target="_blank">Putra Setia Utama</a>, sering menyarankan saya untuk menggunakan komponen yang sudah ada seperti YUI untuk interface web dan beberapa lainnya yang saya gak apal hehe soalnya dulu biasanya saya acuhkan hal seperti itu. Namun sejak tahun lalu saya mulai sadar betapa bodohnya saya, terus menerus mengoding dari awal hal yang sama secara berulang-ulang.</p>
<p>Tahun lalu saya &#8220;terpaksa&#8221; menggunakan <a href="http://en.wikipedia.org/wiki/Software_framework" target="_blank">framework </a>untuk Java berbasis <a href="http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller" target="_blank">Model View Controller (MVC)</a>, yaitu Hibernate dan Spring, dikarenakan oleh tuntutan tempat dimana saya sedang praktek kerja lapangan (PKL) waktu itu. Bagi saya yang terbiasa ngoding dari awal, belajar menggunakan Hibernate dan Spring itu seperti neraka, pusing sekali saya waktu itu. Hibernate dengan konsep ORM-nya yang berbeda jauh dengan query SQL manual dalam pemrosesan data dan Spring dengan konsep MVC-nya yang ngebuat saya serasa seperti <em>alien </em>di dunia pemrograman.</p>
<p>1 bulan saya berkutat dengan Hibernate dan Spring akhirnya saya mendapatkan pencerahan hehe  :siul: . Metode pemrograman yang dulu saya bisa membutuhkan 3 bulan untuk mengerjakan web berjenis databank, sekarang bisa saya kerjakan dalam waktu kurang dari 1 bulan. Dan jika ada revisi, saya tidak repot-repot lagi harus mengecek semua halaman web yang saya buat, karena dengan menggunakan framework hampir semuanya sudah terstruktur dengan rapih sehingga memudahkan saya untuk memodifikasi web tersebut.</p>
<p><strong>Penggunaan framework MVC sangat membantu</strong> saya dan tentunya programmer lainnya, baik itu programmer web, desktop, atau mobile. Dengan menggunakan framework biasanya kita akan dibantu hal-hal seperti query database, manajemen source code, validasi data, keamanan, dan lain-lain. Setelah saya melihat berbagai macam hal yang dapat mempengaruhi kinerja programmer dengan menggunakan framework MVC saya langsung beralih menjadi programmer berbasis framework hehe, gak mau lagi saya disuruh ngoding secara manual yang ampe ratusan bahkan ribuan kodingan yang isinya kebanyakan validasti data, query, keamanan, dan lain-lain yang bersifat repetitif di setiap proyek aplikasi, tinggal programming santai saja saya hehe  :linux2:</p>
<p>Saya menjadi sadar bahwa selama ini yang saya lakukan adalah <strong>memeras diri sendiri</strong> dan <strong>&#8220;reinvent the wheel&#8221;</strong>, artinya saya bersusah payah untuk melakukan hal yang sudah ada. Berikut saya berikan poin-poin penting dari keuntungan menggunakan framework MVC menurut saya:</p>
<ol>
<li>Programmer akan sangat terbantu dalam membuat kodingan-kodingan yang bersifat repetitif</li>
<li>Source code secara otomatis akan mengikuti struktur file yang ada di framework tersebut sehingga memudahkan manajemen source code</li>
<li>Kebanyakan perusahaan sekarang membutuhkan programmer yang bisa menggunakan framework MVC, artinya peluang kerja semakin besar dibanding yang ngoding dari awal</li>
<li>Biasanya gaji programmer yang menggunakan framework MVC lebih mahal dibanding yang ngoding dari awal</li>
</ol>
<p>Walaupun begitu, <strong>mengoding dari awal tetap diperlukan ketika kita belajar pemrgoraman</strong>. Soalnya dengan mengoding dari awal itulah kita bisa mengeri konsep dan basis pemrograman, kalau langsung menggunakan framework MVC kemungkinan besar anda akan bingung karena anda akan dijejali dengan berbagai macam konsep-konsep Object Oriented Programming (OOP) seperti inheritance, override, abstraction, dan lain-lain. Setelah kita mengerti konsep dan basis pemrograman barulah kita beralih ke penggunaan framework MVC.</p>
<p>Terakhir, walaupun penggunaan framework MVC memberikan kita banyak keuntungan tapi jika kita menggunakannya secara asal maka akan berdampak terbalik buat kita seperti program menjadi lebih berat untuk dijalankan dan lain-lain. Tetap kita harus teliti dalam mengoding dan memahami MVC secara mendalam agar aplikasi yang kita buat berjalan dengan nyaman. Saya pribadi memang agak susah untuk memahami konsep framework MVC pertama kalinya, tapi setelah anda terbiasa, bikin program udah tinggal libas aja hehe.</p>
<p>Selamat belajar dan kampanyekan programming sehat menggunakan framework MVC hehe.</p>
<hr style="height: 2px; width: 100%;" size="2" />* Untuk tambahan, berikut adalah framework MVC yang sudah pernah saya gunakan, siapa tau bermanfaat:</p>
<ol>
<li>Java: <a href="http://www.google.co.id/url?sa=t&amp;source=web&amp;ct=res&amp;cd=1&amp;ved=0CAYQFjAA&amp;url=https%3A%2F%2Fwww.hibernate.org%2F&amp;ei=1KKES9TvJdCHkAW6muDbAg&amp;usg=AFQjCNEwgqfUF-ox99XxwK3YD7GTznLTRA&amp;sig2=V_tYEtWy8UQgguN2OGmuSA" target="_blank">Hibernate</a> (Model) + <a href="http://www.springsource.org/" target="_blank">Spring</a> (View, Controller)</li>
<li>PHP: <a href="http://www.doctrine-project.org/" target="_blank">Doctrine</a> (Model) + <a href="http://codeigniter.com/" target="_blank">CodeIgniter</a> (View, Controller), kebetulan untuk yang ini ada tutorial di jurnal ini di <a href="http://www.teknojurnal.com/series/tutorial-pemrograman-php-berbasis-mvc-menggunakan-framework-codeigniter-dan-doctrine/" target="_blank">link ini</a></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.teknojurnal.com/2010/02/24/framework-mvc-apa-pengaruhnya-bagi-para-programmer/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Tutorial Pemrograman PHP Berbasis MVC Menggunakan Framework CodeIgniter dan Doctrine &#8211; Bagian 2 &#8211; Dasar</title>
		<link>http://www.teknojurnal.com/2010/02/22/tutorial-pemrograman-php-berbasis-mvc-menggunakan-framework-codeigniter-dan-doctrine-bagian-2-dasar/</link>
		<comments>http://www.teknojurnal.com/2010/02/22/tutorial-pemrograman-php-berbasis-mvc-menggunakan-framework-codeigniter-dan-doctrine-bagian-2-dasar/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 08:45:42 +0000</pubDate>
		<dc:creator>Firman Nugraha</dc:creator>
				<category><![CDATA[TeknoGuide]]></category>
		<category><![CDATA[codeigniter]]></category>
		<category><![CDATA[doctrine]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[mvc]]></category>
		<category><![CDATA[orm]]></category>

		<guid isPermaLink="false">http://www.teknojurnal.com/?p=803</guid>
		<description><![CDATA[Mulai sekarang tutorial akan menjadi lebih menarik karena kita akan menelusuri lebih lanjut kekuatan dari CodeIgniter digabung dengan Doctrine, hehe saya jamin untuk yang terbiasa dengan menggunakan query manual akan terkesima dengan apa yang bisa dilakukan dari kedua komponen tersebut.]]></description>
			<content:encoded><![CDATA[<div class="mceTemp">
<dl class="wp-caption alignleft" style="width: 138px;">
<dt class="wp-caption-dt"><img title="CodeIgniter + Doctrine" src="http://www.phpandstuff.com/wp-content/uploads/2009/10/codeigniter_doctrine.png" alt="CodeIgniter + Doctrine" width="128" height="128" /></dt>
</dl>
</div>
<p>Di seri ini kita akan:<br />
- Melakukan instalasi CodeIgniter dan Doctrine baru secara cepat, tanpa harus melalui detail-detail seperti pada seri sebelumnya<br />
- Membahas kembali secara singkat mengenai konsep-konsep dasar dari CodeIgniter dan Doctrine<br />
- Membahas kembali secara singkat mengenai konsep-konsep dasar dari CodeIgniter dan Doctrine<br />
- Pertama kita akan mengulangi lagi mengenai Controller dan View di CodeIgniter<br />
- Selanjutnya kita akan lanjut ke Model menggunakan Doctrine. Mulai dari sini, tutoial ini akan mulai berbeda dibanding tutorial-tutorial CodeIgniter lainnya<br />
- Terakhir kita akan melihat contoh dari Model Doctrine dan berbicara mengenai akan menjadi apa proyek utama kita nantinya</p>
<p>Mulai sekarang tutorial akan menjadi lebih menarik karena kita akan  menelusuri lebih lanjut kekuatan dari CodeIgniter digabung dengan  Doctrine, hehe saya jamin untuk yang terbiasa dengan menggunakan query  manual akan terkesima dengan apa yang bisa dilakukan dari kedua komponen  tersebut.</p>
<p>Mari kita mulai dengan memastikan bahwaa kita mempunya instalasi CodeIgniter + Doctrine yang baru dan siap untuk mengoding hehe.</p>
<h3><span style="color: #ff6600;">Install CodeIgniter + Doctrine Baru Dengan Cepat</span></h3>
<p><span style="font-size: medium;"><strong><span style="color: #ff6600;"><span style="color: #000000;">Tahap-Tahap Install Baru:</span></span></strong></span></p>
<ul>
<li><span style="color: #ff6600;"><span style="color: #000000;">Siapkan <strong>webserver </strong>dengan PHP+MySQL anda. Yang direkomendasikan dari saya adalah <a href="http://www.wampserver.com/en/" target="_blank">WAMP</a> (untuk Mac: <a href="http://www.mamp.info/" target="_blank">MAMP</a>)</span></span></li>
<li><a href="http://www.phpandstuff.com/wp-content/uploads/2009/10/codeigniter_doctrine_bundle_1_0.zip" target="_blank"><span style="color: #ff6600;"><span style="color: #000000;">Download paket CodeIgniter + Doctrine dari Burak Gazel</span></span></a></li>
<li><span style="color: #ff6600;"><span style="color: #000000;">Extrak paket tersebut lalu taruh folder <strong>ci_doctrine</strong> di folder web anda</span></span></li>
<li><span style="color: #ff6600;"><span style="color: #000000;">Buat database dengan nama <strong>ci_doctrine</strong> untuk proyek kita</span></span></li>
<li><span style="color: #ff6600;"><span style="color: #000000;">Pastikan info tentang database anda sudah benar di: </span></span><strong>system/application/config/database.php</strong>.</li>
<li>Pastikan <strong>base_url</strong> sudah benar di: <strong>system/application/config/config.php</strong>.</li>
<li>Lihat apakah instalasi sudah berjalan dengan baik di: <a href="http://localhost/ci_doctrine/" target="_blank">http://localhost/ci_doctrine/</a></li>
</ul>
<p><span style="font-size: medium;"><strong>Jika anda sudah mempunyai file-file dari seri sebelumnya:</strong></span></p>
<p>(Jika anda menggunakan instalasi baru seperti bagian di atas, lompat bagian ini)</p>
<ul>
<li>Ganti nama atau kopi folder instalasi CodeIgniter + Doctrine anda menjadi: <strong>ci_doctrine</strong> (hal ini dilakukan agar kita tidak perlu gonta-ganti url dari situs kita di setiap tutorial)</li>
<li><strong>Hapus: </strong>system/application/models/user.php</li>
<li><strong>Hapus: </strong>system/application/controllers/hello.php</li>
<li><strong>Hapus tabel:</strong> user</li>
<li><strong>Ubah:</strong> system/application/config/config.php<br />
[sourcecode language="php"]<br />
// di system/application/config/config.php<br />
$config['base_url']    = &#8220;http://localhost/ci_doctrine/&#8221;;<br />
[/sourcecode]</li>
</ul>
<h3><span style="color: #ff6600;">Struktur URL CodeIgniter</span></h3>
<p>URL pada CodeIgniter dapat terlihat seperti di bawah ini:</p>
<p>URL ini memanggil <strong>kelas controller</strong> yang bernama &#8220;CONTROLLER_NAME&#8221; dan memanggil <strong>fungsinya </strong>yang bernama &#8220;METHOD_NAME&#8221;</p>
<blockquote><p>http://localhost/ci_doctrine/index.php/CONTROLLER_NAME/METHOD_NAME</p></blockquote>
<p>Sama seperti sebelumnya, hanya saja kali ini memanggil fungsi <strong>index()</strong> secara default:</p>
<blockquote><p>http://localhost/ci_doctrine/index.php/CONTROLLER_NAME</p></blockquote>
<p>Sama seperti sebelumnya. Kali ini ia mengirimkan sebuah &#8220;VALUE&#8221; (nilai) sebagai <strong>argumen</strong> dari fungsi pada controller tersebut.</p>
<blockquote><p>http://localhost/ci_doctrine/index.php/CONTROLLER_NAME/METHOD_NAME/VALUE</p></blockquote>
<p>Nilai tersebut bisa berupa angka atau teks.</p>
<p>Anda bisa menambahkan nilai-nilai tambahan di URL untuk mengirimkan argumen-argumen tambahan.</p>
<p><strong>Untuk lebih lanjut:</strong> <a href="http://codeigniter.com/user_guide/general/controllers.html#passinguri" target="_blank">Passing uri segments</a></p>
<h3><span style="color: #ff6600;">CodeIgniter <span style="text-decoration: line-through;">M</span>VC (<span style="text-decoration: line-through;">Model</span> &#8211; View &#8211; Controller)</span></h3>
<p><span style="font-size: medium;"><strong>Model</strong></span></p>
<p>Kita akan menggunakan model dari Doctrine daripada CodeIgniter, hal ini akan dijelaskan di bagian kedepannya di tutorial ini.</p>
<p>Jika anda tetap ingin mempelajari model pada CodeIgniter, anda bisa membaca: <a href="http://codeigniter.com/user_guide/general/models.html" target="_parent">CodeIgniter Models</a></p>
<p><span style="font-size: medium;"><strong>View</strong></span></p>
<ul>
<li>View dibuat di <strong>system/application/views</strong></li>
<li>View adalah <strong>template dari keluaran</strong> aplikasi web kita. View bisa terdiri dari html, javascript, dan lain-lain</li>
<li>View biasanya memiliki kode <strong>inline PHP </strong>(untuk menampilkan pesan, melakukan loop, dan lain-lain)</li>
<li>Controller biasanya me-<strong>load</strong> view untuk menampilkan <strong>keluaran</strong></li>
</ul>
<p><strong>Dokumentasi resmi ada di:</strong> <a href="http://codeigniter.com/user_guide/general/views.html" target="_blank">CodeIgniter Views</a></p>
<p><span style="font-size: medium;"><strong>Controller</strong></span></p>
<p>Kita sudah mempelajari mengenai ini <a href="http://www.teknojurnal.com/2010/02/21/tutorial-pemrograman-php-berbasis-mvc-menggunakan-framework-codeigniter-dan-doctrine-bagian-1-setup-dan-instalasi/" target="_blank">di seri sebelumnya</a>. Lihat di bagian <strong>Tutorial Singkat CodeIgniter: Controller</strong></p>
<p><span style="font-size: medium;"><strong>Controller dan View </strong></span></p>
<p>Berikut adalah contoh View (system/application/views/my_view.php):<br />
[sourcecode language="php"]<br />
Beberapa teks biasa.</p>
<div>
Anda bisa menggunakan HTML.
</div>
<div>
Menampilkan variabel yang dikirim dari controller: <br />
<?php echo $message; ?> <br />
<?php echo $another_message; ?>
</div>
<p>Anda juga bisa melakukan loop: <br />
<?php for ($i = 0; $i < 3; $i++) {</p>
<p>echo "Counter: $i <br />&#8220;;</p>
<p>} ?></p>
<p>Atau dengan sintaks alternatif: <br />
<?php for ($i = 0; $i < 3; $i++): ?></p>
<p>Counter: <?php echo $i; ?> </p>
<p><?php endfor; ?><br />
[/sourcecode]</p>
<p>Berikut adalah contoh controller (system/application/controllers/sample_controller.php), yang me-load sebuah view:<br />
[sourcecode language="php"]<br />
class Sample_controller extends Controller {</p>
<p>function index() {<br />
$data = array();<br />
$data['message'] = &#8220;index telah dipanggil&#8221;;<br />
$data['another_message'] = &#8220;blah blah&#8221;;</p>
<p>$this->load->view(&#8216;my_view&#8217;,$data);<br />
}</p>
<p>}<br />
[/sourcecode]</p>
<p>Kedua url berikut dapat digunakan:</p>
<blockquote><p>http://localhost/ci_doctrine/index.php/sample_controller/index</p>
<p>http://localhost/ci_doctrine/index.php/sample_controller</p></blockquote>
<p>Browser akan menampilak seperti di bawah ini:</p>
<blockquote><p>Beberapa teks biasa.<br />
Anda bisa menggunakan HTML.<br />
Menampilkan variabel yang dikirim dari controller:<br />
index telah dipanggil<br />
blah blah<br />
Anda juga bisa melakukan loop:<br />
Counter: 0<br />
Counter: 1<br />
Counter: 2<br />
Atau dengan sintaks alternatif:<br />
Counter: 0<br />
Counter: 1<br />
Counter: 2</p></blockquote>
<p><strong>Catatan:</strong></p>
<ul>
<li>View terdiri dari kombinasi <strong>keluaran mentah </strong>dan <strong>kode PHP inline sederhana.</strong></li>
<li>index() adalah fungsi <strong>default </strong>dari controller,  jadi kita tidak perlu menulisnya di url.</li>
<li>$this-&gt;load-&gt;view(’my_view’,$data) <strong><strong>me-</strong>load</strong> view  tersebut dan lalu menampilkannya di browser.</li>
<li>Argumen pertama &#8220;my_view&#8221; adalah <strong>nama dari file view</strong>, tanpa ekstensi .php-nya.</li>
<li>Argumen kedua $data adalah array, yang <strong>mengirimkan variabel-varibel</strong> ke view tersebut</li>
<li><strong>Contoh:</strong> $data['pesan'] menjadi <strong>$pesan</strong>, dan $data['pesan_lainnya'] menjadi <strong>$pesan_lainnya</strong>, di view kita.</li>
</ul>
<p>(Jika anda membuat file-file di atas (untuk mengtesnya), anda bisa menghapus file-file tersebut sekarang. Kita tidak akan menggunakannya lagi di proyek kita.)</p>
<h3><span style="color: #ff6600;">Model Doctrine</span></h3>
<p>Berikut adalah <strong>PREVIEW </strong>kecil dari jenis model yang akan kita buat. Kita akan melihat detail-detail lebih lengkapnya di seri berikutnya.<br />
[sourcecode language="php"]<br />
<?php<br />
class User extends Doctrine_Record<br />
{<br />
// Mendefinisikan kolom-kolom tabel di fungsi ini<br />
public function setTableDefinition() {</p>
<p>$this->hasColumn(&#8216;username&#8217;, &#8216;string&#8217;, 255);<br />
$this->hasColumn(&#8216;password&#8217;, &#8216;string&#8217;, 255);<br />
$this->hasColumn(&#8216;email&#8217;, &#8216;string&#8217;, 255, array(<br />
&#8216;email&#8217; => true // Untuk memvalidasi input e-mail<br />
));</p>
<p>// Mendukung banyak jenis-jenis kolom, termasuk enum<br />
$this->hasColumn(&#8216;status&#8217;, &#8216;enum&#8217;, null,<br />
array(&#8216;values&#8217; => array(&#8216;unverified&#8217;, &#8216;verified&#8217;, &#8216;disabled&#8217;))<br />
);</p>
<p>$this->hasColumn(&#8216;referer_id&#8217;, &#8216;integer&#8217;, 4);<br />
}</p>
<p>// Setup beberapa opsio<br />
public function setUp() {</p>
<p>// Buat relasi dengan sebuah model bernama Post<br />
$this->hasMany(&#8216;Post as Posts&#8217;, array(<br />
&#8216;local&#8217; => &#8216;id&#8217;,<br />
&#8216;foreign&#8217; => &#8216;post_id&#8217;<br />
));</p>
<p>// Juga bisa membuat relasi dengan diri sendiri<br />
$this->hasOne(&#8216;User as Referer&#8217;, array(<br />
&#8216;local&#8217; => &#8216;referer_id&#8217;,<br />
&#8216;foreign&#8217; => &#8216;id&#8217;<br />
));</p>
<p>// Membuat field &#8216;created_at&#8217; dan &#8216;updated_at&#8217; agar diperbaharui secara otomatis<br />
$this->actAs(&#8216;Timestampable&#8217;);</p>
<p>// Field password mempunyai mutator, untuk enkripsi secara otomatis<br />
$this->hasMutator(&#8216;password&#8217;, &#8216;md5Password&#8217;);</p>
<p>}</p>
<p>// Sebuah fungsi mutator<br />
public function md5Password($value) {<br />
$this->_set(&#8216;password&#8217;, md5($value));<br />
}</p>
<p>}<br />
[/sourcecode]</p>
<p>Setelah kita selesai membuat model Doctrine seperti di atas, sekarang kita dapat melakukan berbagai macam operasi database. Doctrine bahkan dapat <strong>membuat tabel</strong> berdasarkan informasi-informasi yang terdapat pada model saja.</p>
<p>Dan perlu diingat bahwa ada banyak cara untuk membuat model Doctrine, seperti menggunakan file skema. Tapi untuk sekarang kita belum akan memasuki hal tersebut.</p>
<h3><span style="color: #ff6600;">Stay Tuned</span></h3>
<p>Di seri berikutnya, kita akan memulai untuk membuat proyek, yaitu sebuah <strong>Message Board </strong>dan mungkin bisa lebih&#8230; Proyek ini menjadi kandidat yang pas untuk proyek tutorial ini mengenai Doctrine karena berbagai macam relasi terlibat pada model-model seperti: user, post, thread, forum, group, attachment, dan lain-lain</p>
<p>Sampai jumpa di seri berikutnya hehe  ;-)</p>
<p><em>* Tutorial original oleh Burak Guzel di <a href="http://www.phpandstuff.com/articles/codeigniter-doctrine-from-scratch-day-1-install-and-setup" target="_blank">link ini</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.teknojurnal.com/2010/02/22/tutorial-pemrograman-php-berbasis-mvc-menggunakan-framework-codeigniter-dan-doctrine-bagian-2-dasar/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Tutorial Pemrograman PHP Berbasis MVC Menggunakan Framework CodeIgniter dan Doctrine &#8211; Bagian 1 &#8211; Setup dan Instalasi</title>
		<link>http://www.teknojurnal.com/2010/02/21/tutorial-pemrograman-php-berbasis-mvc-menggunakan-framework-codeigniter-dan-doctrine-bagian-1-setup-dan-instalasi/</link>
		<comments>http://www.teknojurnal.com/2010/02/21/tutorial-pemrograman-php-berbasis-mvc-menggunakan-framework-codeigniter-dan-doctrine-bagian-1-setup-dan-instalasi/#comments</comments>
		<pubDate>Sun, 21 Feb 2010 05:44:41 +0000</pubDate>
		<dc:creator>Firman Nugraha</dc:creator>
				<category><![CDATA[TeknoGuide]]></category>
		<category><![CDATA[codeigniter]]></category>
		<category><![CDATA[doctrine]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[mvc]]></category>
		<category><![CDATA[orm]]></category>

		<guid isPermaLink="false">http://www.teknojurnal.com/?p=551</guid>
		<description><![CDATA[Mungkin masih banyak pengembang PHP di Indonesia yang suka ngotak-ngatik PHP dari awal. Contohnya untuk membuat validasi form HTML aja, kalau gak buat sendiri validasinya ya comot sana-sini di internet. Masalah keamanan data juga seperti pencegahan SQL Injection mungkin banyak yang menggunakan fungsi konversi query yang ada di PHP dan menggunakannya di ratusan baris kodingan. Dengan menggunakan CodeIgniter dan Doctrine, semua itu akan berubah dan hidup anda menjadi lebih cerah ceria hehe.]]></description>
			<content:encoded><![CDATA[<div class="wp-caption alignleft" style="width: 138px"><img title="CodeIgniter + Doctrine" src="http://www.phpandstuff.com/wp-content/uploads/2009/10/codeigniter_doctrine.png" alt="CodeIgniter + Doctrine" width="128" height="128" /></dt>
</dl>
</div>
<p>Terpesona oleh tutorial mengenai CodeIgniter dan Doctrine oleh Burak Guzel,  seorang developer web PHP di Arizona yang berasal dari Istanbul, saya menyadur tutorial dia agar dapat  lebih banyak dibaca oleh programmer PHP lokal dan tentu saja dengan seizin  dia dan bumbu-bumbu tambahan dari saya hehe. Tutorial original dia ada di <a title="http://www.phpandstuff.com/articles/codeigniter-doctrine-from-scratch-day-1-install-and-setup" href="http://www.phpandstuff.com/articles/codeigniter-doctrine-from-scratch-day-1-install-and-setup" target="_blank">link ini</a></p>
<h3><span style="color: #ff6600;">Kenapa Framework?</span></h3>
<p>Mungkin masih banyak pengembang PHP di Indonesia yang suka ngotak-ngatik PHP dari awal. Contohnya untuk membuat validasi form HTML aja, kalau gak buat sendiri validasinya ya comot sana-sini di internet. Masalah keamanan data juga seperti pencegahan SQL Injection mungkin banyak yang menggunakan fungsi konversi query yang ada di PHP dan menggunakannya di ratusan baris kodingan. Hehe, lama kelamaan cara seperti ini akan membuat para pengembang PHP capek sendiri karena terus menerus melakukan kodingan yang itu-itu aja untuk fungsi yang sama dan memakan banyak waktu.</p>
<p>Untuk mengatasi berbagai macam masalah-masalah di pengembangan PHP seperti yang disebutkan di atas, ada cara yang dapat mempermudah kalian dalam membuat web menggunakan PHP, yaitu dengan menggunakan framework. Framework yang akan dibahas di tutorial berseri ini adalah CodeIgniter dan Doctrine.</p>
<div class="mceTemp mceIEcenter">
<dl class="wp-caption aligncenter" style="width: 250px;">
<dt class="wp-caption-dt"><a href="http://www.phpandstuff.com/wp-content/uploads/2009/10/ci_doctrine_day1.zip"><img title="Downloac Source Code" src="http://www.phpandstuff.com/wp-content/uploads/2009/10/download_code.png" alt="Downloac Source Code" width="240" height="80" /></a></dt>
</dl>
</div>
<h3><span style="color: #ff6600;">Kenapa Menambahkan Doctrine Pada CodeIgniter?</span></h3>
<p>Sebelum kita mulai, saya jelaskan kenapa menggunakan 2 framework di sini dengan penambahan framework Doctrine. <a title="http://www.doctrine-project.org/" href="http://www.doctrine-project.org/" target="_blank">Doctrine</a> adalah Pemeta Relasi Objek (<em>Object Relation Mapper</em>) pada PHP. Tidak masalah jika anda tidak paham dengan istilah ini, hehe. Intinya anda dapat memetakan <strong>tabel-tabel database</strong> anda menjadi <strong>kelas-kelas </strong>di aplikasi web anda. Dan instance dari kelas-kelas ini (contohnya <strong>objek</strong>) merepresentasikan <strong>record </strong>pada database.</p>
<p>Ini memudahkan kita untuk <strong>membuat</strong>, <strong>membaca</strong>, <strong>mengubah</strong> dan <strong>menghapus</strong> record-record di database, sembari menanganinya hampir seperti objek biasa, jadi kita tidak perlu menulis query apapun. Ia juga akan menangani <strong>relasi</strong> antara tabel-tabel. Ada keuntungan-keuntunga lainnya yang akan dibahas sejalan dengan tutorial ini. Lihat <a title="http://www.doctrine-project.org/documentation" href="http://www.doctrine-project.org/documentation" target="_blank">dokumentasi Doctrine</a> jika anda ingin melihat info-info selanjutnya sekarang.</p>
<p>Berikut adalah ilustrasi mengenai cara kerja Doctrine dengan CodeIgniter:</p>
<div class="mceTemp mceIEcenter">
<dl class="wp-caption aligncenter" style="width: 610px;">
<dt class="wp-caption-dt"><img title="Ilustrasi Cara Kerja Doctrine + CodeIgniter" src="http://www.phpandstuff.com/wp-content/uploads/2009/10/ci_doctrine_day1_41.png" alt="Ilustrasi Cara Kerja Doctrine + CodeIgniter" width="600" height="900" /><p class="wp-caption-text">Ilustrasi Cara Kerja Doctrine + CodeIgniter</p></div>
<h3><span style="color: #ff6600;">Tahap Pertama: Persiapkan Lingkungan Pengembangan Anda</span></h3>
<p>Jika anda sudah mempunyai <strong>web server dengan PHP dan MySQL</strong>, anda bisa melompati beberapa poin di bawah.</p>
<ul>
<li>Download dan install <a title="http://www.wampserver.com/en/" href="http://www.wampserver.com/en/" target="_blank">WAMP </a>(untuk Mac: <a href="http://www.mamp.info/" target="_blank">MAMP</a>)<br />
Untuk para pengguna <strong>Skype</strong>: Anda harus mematikan Skype terlebih dahulu sebelum anda menjalankan WAMP, dikarenakan ada konflik pada port yang digunakan. Setelah WAMP dijalankan, anda dapat menjalankan Skype kembali.</li>
<li>Masuk ke <a href="http://localhost/" target="_blank">http://localhost/</a> di browser anda untuk memastikan bahwa web server anda sudah berjalan.</li>
<li>Buka folder &#8220;www&#8221; pada folder instalasi WAMP anda.</li>
<li>Buat folder baru dengan nama &#8220;ci_doctrine_day1&#8243;. Kita akan menaruh file-file kita di sini nantinya.</li>
</ul>
<h3><span style="color: #ff6600;">Install CodeIgniter</span></h3>
<ul>
<li>Download <a href="http://codeigniter.com/downloads/" target="_blank">CodeIgniter</a></li>
<li>Extrak lalu kopi isi dari file instalasi CodeIgniter ke folder &#8220;ci_doctrine_day1&#8243; yang baru dibuat</li>
<li>Hapus folder &#8220;user_guide&#8221; jika anda tidak memerlukannya (folder tersebut berisi dokumentasi mengenai CodeIgniter)</li>
</ul>
<p>Folder baru anda akan tampak seperti di bawah ini:</p>
<div class="mceTemp mceIEcenter">
<dl class="wp-caption aligncenter" style="width: 360px;">
<dt class="wp-caption-dt"><img title="Struktur FOlder" src="http://www.phpandstuff.com/wp-content/uploads/2009/10/ci_doctrine_day1_1.png" alt="Struktur Folder" width="350" height="463" /></dt>
</dl>
</div>
<ul>
<li>Masuk ke <a href="http://localhost/ci_doctrine_day1" target="_blank">http://localhost/ci_doctrine_day1</a></li>
</ul>
<p>Anda akan melihat tampilan seperti di bawah ini:</p>
<div class="mceTemp mceIEcenter">
<dl class="wp-caption aligncenter" style="width: 510px;">
<dt class="wp-caption-dt"><img title="Tampilan Awal" src="http://www.phpandstuff.com/wp-content/uploads/2009/10/ci_doctrine_day1_3.png" alt="Tampilan Awal" width="500" height="276" /></dt>
</dl>
</div>
<h3><span style="color: #ff6600;">Tutorial Singkat CodeIgniter: Controller</span></h3>
<p>Controller dipanggil oleh Code Igniter setiap membuka halaman web. Controller terletak di:</p>
<blockquote><p>system/application/controllers/</p></blockquote>
<p>Struktur <strong>url</strong>-nya terlihat seperti di bawah ini:</p>
<blockquote><p>http://localhost/ci_doctrine_day1/index.php/NAMA_CONTROLLER/NAMA_FUNGSI</p></blockquote>
<p>Sebagai contoh anda dapat membuka url di bawah ini:</p>
<blockquote><p>http://localhost/ci_doctrine_day1/index.php/hello/world</p></blockquote>
<p>CodeIgniter akan mencari kelas controller bernama &#8220;Hello&#8221; dan memanggil <strong>fungsi </strong>bernama &#8220;world()&#8221;.</p>
<p>Sekarang kita akan membuat controller pertama kita.</p>
<h3><span style="color: #ff6600;">Controller Pertama Kita</span></h3>
<ul>
<li>Buat file berikut: system/application/controllers/hello.php<br />
[sourcecode language="php"]<br />
<?php<br />
// system/application/controllers/hello.php</p>
<p>class Hello extends Controller {</p>
<p>function world() {<br />
echo "Hello CodeIgniter!";<br />
}</p>
<p>}<br />
[/sourcecode]</li>
<li>Masuk ke: <a onclick="javascript:pageTracker._trackPageview('/outbound/article/localhost');" rel="nofollow" href="http://localhost/ci_doctrine_day1/index.php/hello/world" target="_blank">http://localhost/ci_doctrine_day1/index.php/hello/world</a></li>
</ul>
<p>Anda akan melihat seperti di bawah ini:</p>
<blockquote><p>Hello CodeIgniter!</p></blockquote>
<p>Harap diingat poin-poin di bawah ini:</p>
<ul>
<li>Kelas controller harus meng-<strong>extend</strong> Controller</li>
<li>Nama kelas harus diawali dengan <strong>huruf kapital</strong></li>
<li>Nama file harus <strong>huruf kecil</strong> semua</li>
</ul>
<p>Untuk lebih lanjut anda bisa membaca artikel ini:</p>
<ul>
<li><a onclick="javascript:pageTracker._trackPageview('/outbound/article/codeigniter.com');" rel="nofollow" href="http://codeigniter.com/user_guide/general/controllers.html" target="_blank">http://codeigniter.com/user_guide/general/controllers.html</a></li>
</ul>
<h3><span style="color: #ff6600;">Install Doctrine</span></h3>
<p>CodeIgniter memungkinkan kita untuk menambahkan <strong>plug-in</strong>. Itulah cara yang akan kita gunakan untuk menginstall Doctrine.</p>
<ul>
<li>Buat folder: system/application/plugins</li>
<li>Buat folder: system/application/plugins/doctrine</li>
<li><a href="http://www.doctrine-project.org/download" target="_parent">Download Doctrine</a></li>
<li>Extrak file tersebut. Cari folder dengan nama &#8220;lib&#8221; di hasil ekstrak tersebut lalu kopi ke <strong>system/application/plugins/doctrine</strong>.</li>
</ul>
<p>Sekarang struktur folder anda akan terlihat seperti di bawah ini:</p>
<div class="mceTemp mceIEcenter">
<dl class="wp-caption aligncenter" style="width: 273px;">
<dt class="wp-caption-dt"><img title="Struktur Folder" src="http://www.phpandstuff.com/wp-content/uploads/2009/10/ci_doctrine_day1_5.png" alt="Struktur Folder" width="263" height="290" /></dt>
</dl>
</div>
<ul>
<li>Buat file plug-in: <strong>system/application/plugins/doctrine_pi.php<br />
</strong>[sourcecode language="php"]<br />
<?php<br />
// system/application/plugins/doctrine_pi.php</p>
<p>// load librari Doctrine<br />
require_once APPPATH.'/plugins/doctrine/lib/Doctrine.php';</p>
<p>// load konfigurasi database dari CodeIgniter<br />
require_once APPPATH.'/config/database.php';</p>
<p>// Ini memungkinkan Doctrine untuk me-load kelas-kelas Model secara otomatis<br />
spl_autoload_register(array('Doctrine', 'autoload'));</p>
<p>// kita me-load koneksi database ke Doctrine_Manager<br />
// interasi ini memungkinkan kita untuk menggunakan banyak koneksi nantinya<br />
foreach ($db as $connection_name => $db_values) {</p>
<p>// pertama kita harus mengkonversikan ke format dsn<br />
$dsn = $db[$connection_name]['dbdriver'] .<br />
&#8216;://&#8217; . $db[$connection_name]['username'] .<br />
&#8216;:&#8217; . $db[$connection_name]['password'].<br />
&#8216;@&#8217; . $db[$connection_name]['hostname'] .<br />
&#8216;/&#8217; . $db[$connection_name]['database'];</p>
<p>Doctrine_Manager::connection($dsn,$connection_name);<br />
}</p>
<p>// Kelas Model CodeIgniter perlu di-load<br />
require_once BASEPATH.&#8217;/libraries/Model.php&#8217;;</p>
<p>// Memberitahukan Doctrine dimana model-model terletak<br />
Doctrine::loadModels(APPPATH.&#8217;/models&#8217;);</p>
<p>// KONFIGURASI OPSIONAL</p>
<p>// Ini memungkinkan kita untuk menggunakan &#8220;mutator&#8221;<br />
Doctrine_Manager::getInstance()->setAttribute(<br />
Doctrine::ATTR_AUTO_ACCESSOR_OVERRIDE, true);</p>
<p>// Ini mengeset semua kolom tabel ke notnull dan unsigned (untuk tipe data integer) secara default<br />
Doctrine_Manager::getInstance()->setAttribute(<br />
Doctrine::ATTR_DEFAULT_COLUMN_OPTIONS,<br />
array(&#8216;notnull&#8217; => true, &#8216;unsigned&#8217; => true));</p>
<p>// Set default nama primary ke &#8216;id&#8217;, integer, 4 bytes<br />
Doctrine_Manager::getInstance()->setAttribute(<br />
Doctrine::ATTR_DEFAULT_IDENTIFIER_OPTIONS,<br />
array(&#8216;name&#8217; => &#8216;id&#8217;, &#8216;type&#8217; => &#8216;integer&#8217;, &#8216;length&#8217; => 4));<br />
[/sourcecode]</li>
</ul>
<p>Baca <strong>komentar-komentar</strong> yang terdapat di kodingan di atas untuk penjelasan. Tidak masalah untuk saat ini jika anda tidak mengerti semuanya, kedepannya anda akan mengerti dengan sendirinya.</p>
<h3><span style="color: #ff6600;">Setup dan Konfigurasi Database</span></h3>
<ul>
<li>Buka <strong>phpmyadmin</strong>: <a href="http://localhost/phpmyadmin/" target="_blank">http://localhost/phpmyadmin/</a></li>
<li>Buat <strong>database</strong> dengan nama &#8220;ci_doctrine&#8221;
<div class="mceTemp mceIEcenter">
<dl class="wp-caption aligncenter" style="width: 563px;">
<dt class="wp-caption-dt"><img title="Pembuatan Database" src="http://www.phpandstuff.com/wp-content/uploads/2009/10/ci_doctrine_day1_6.png" alt="Pembuatan Database" width="553" height="400" /></dt>
</dl>
</div>
</li>
<li>Edit file: system/application/config/database.php</li>
<li>Cari baris berikut dan masukkan isinya:<br />
[sourcecode language="php"]<br />
// di: system/application/config/database.php<br />
// &#8230;</p>
<p>$db['default']['hostname'] = &#8220;localhost&#8221;;<br />
$db['default']['username'] = &#8220;root&#8221;;<br />
$db['default']['password'] = &#8220;&#8221;;<br />
$db['default']['database'] = &#8220;ci_doctrine&#8221;;</p>
<p>// &#8230;<br />
[/sourcecode]</li>
</ul>
<p>Kita baru saja mengubah <strong>file konfigurasi database</strong> dari CodeIgniter.</p>
<h3><span style="color: #ff6600;">Konfigurasi Selanjutnya</span></h3>
<p>Semoga pembaca belum capek untuk mengkofigurasi Doctrine hehe, tenang saja sebentar lagi akan seleasi kita mengkofigurasinya.</p>
<p><strong>config.php</strong></p>
<ul>
<li>Ubah file: <strong>system/application/config/config.php<br />
</strong>[sourcecode language="php"]<br />
// di: system/application/config/config.php<br />
// &#8230;</p>
<p>$config['base_url']    = &#8220;http://localhost/ci_doctrine_day1/&#8221;;</p>
<p>// &#8230;<br />
[/sourcecode]</li>
</ul>
<p>Sekarang CodeIgniter sudah mengetahui <strong>url dari situs kita</strong>.</p>
<p><strong>autoload.php</strong></p>
<ul>
<li>Ubah file: <strong>system/application/config/autoload.php<br />
</strong>[sourcecode language="php"]<br />
// di system/application/config/autoload.php<br />
// &#8230;</p>
<p>$autoload['plugin'] = array(&#8216;doctrine&#8217;);</p>
<p>// &#8230;<br />
[/sourcecode]</li>
</ul>
<p>Ini memastikan bahwa plug-in Doctrine akan selalu di-load.</p>
<p><strong>Selesai!</strong></p>
<p>Sekarang kita dapat lanjut untuk otak-atik Doctrine hehe. Kita mulai dengan mengetes hasil setup kita.</p>
<h3><span style="color: #ff6600;">Model Doctrine Pertama Kita</span></h3>
<p><strong>Buat Tabel User</strong></p>
<ul>
<li>Buka phpmyadmin: <a href="http://localhost/phpmyadmin/" target="_blank">http://localhost/phpmyadmin/</a></li>
<li>Masuk ke database &#8220;ci_doctrine&#8221;</li>
<li>Buat <strong>tabel</strong> dengan nama &#8220;user&#8221; dan kolom sebagai berikut:<br />
id =&gt; int, primary key, auto_increment,<br />
username =&gt; varchar(255), unique,<br />
password =&gt; varchar(255),<br />
first_name =&gt; varchar(255),<br />
last_name =&gt; varchar(255)</li>
</ul>
<p>Anda dapat menggunakan query di bawah ini untuk melakukan hal di atas:<br />
[sourcecode language="sql"]<br />
CREATE TABLE `ci_doctrine`.`user` (<br />
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,<br />
`username` VARCHAR( 255 ) NOT NULL ,<br />
`password` VARCHAR( 255 ) NOT NULL ,<br />
`first_name` VARCHAR( 255 ) NOT NULL ,<br />
`last_name` VARCHAR( 255 ) NOT NULL ,<br />
UNIQUE (<br />
`username`<br />
)<br />
)<br />
[/sourcecode]</p>
<div class="mceTemp mceIEcenter">
<dl class="wp-caption aligncenter" style="width: 562px;">
<dt class="wp-caption-dt"><img title="Pembuatan Tabel" src="http://www.phpandstuff.com/wp-content/uploads/2009/10/ci_doctrine_day1_7.png" alt="Pembuatan Tabel" width="552" height="481" /></dt>
</dl>
</div>
<p><strong>Membuat Model</strong></p>
<ul>
<li>Buat file: <strong>system/application/models/user.php<br />
</strong>[sourcecode language="php"]<br />
<?php<br />
// system/application/models/user.php<br />
class User extends Doctrine_Record {</p>
<p>public function setTableDefinition() {<br />
$this->hasColumn(&#8216;username&#8217;, &#8216;string&#8217;, 255);<br />
$this->hasColumn(&#8216;password&#8217;, &#8216;string&#8217;, 255);<br />
$this->hasColumn(&#8216;first_name&#8217;, &#8216;string&#8217;, 255);<br />
$this->hasColumn(&#8216;last_name&#8217;, &#8216;string&#8217;, 255);<br />
}</p>
<p>}<br />
[/sourcecode]</li>
</ul>
<p>Catatan:</p>
<ul>
<li>Kita kali ini meng-extend <strong>Doctrine_Record</strong>, daripada <strong>Model</strong> (di mana ini biasanya kita lakukan di model-model CodeIgniter)</li>
<li>Di dalam fungsi setTableDefinition() kita harus mendefinisikan struktur tabel</li>
<li>Secara default, Doctrine akan mencari tabel dengan nama yang sama seperti kelas terkait. Dalam kasus ini &#8220;user&#8221; (ini bisa diganti sesuka anda).</li>
<li>Di file doctrine_pi.php di bagian sebelumnya dari artikel ini, kita telah menspesifikasikan untuk primar key default menggunakan &#8220;id&#8221;. Oleh karena itu kita tidak perlu menuliskannya lagi di dalam kelas User.</li>
</ul>
<p><strong>Mengetes Model: Menambahkan Beberapa User</strong></p>
<ul>
<li>Ubah controller yang kita buat sebelumnya: <strong>system/application/controllers/hello.php<br />
</strong>[sourcecode language="php"]<br />
<?php<br />
// system/application/controllers/hello.php</p>
<p>class Hello extends Controller {</p>
<p>function world() {<br />
echo "Hello CodeIgniter!";<br />
}</p>
<p>function user_test() {</p>
<p>$u = new User;<br />
$u->username = &#8216;johndoe&#8217;;<br />
$u->password = &#8216;secret&#8217;;<br />
$u->first_name = &#8216;John&#8217;;<br />
$u->last_name = &#8216;Doe&#8217;;<br />
$u->save();</p>
<p>$u2 = new User;<br />
$u2->username = &#8216;phprocks&#8217;;<br />
$u2->password = &#8216;mypass&#8217;;<br />
$u2->first_name = &#8216;Codeigniter&#8217;;<br />
$u2->last_name = &#8216;Doctrine&#8217;;<br />
$u2->save();</p>
<p>echo &#8220;2 user telah berhasil ditambahkan&#8221;;<br />
}</p>
<p>}<br />
[/sourcecode]</li>
</ul>
<p>Kita baru saja membuat 2 objek, dan mengisinya dengan beberapa data. Hanya dengan memanggil fungsi <strong>save()</strong> akan menyimpan data-data tersebut ke dalam database, sangat mudah bukan  hehe.</p>
<p>Catatan:</p>
<ul>
<li>Kita dapat mengakses field-field dari tabel sebagai <strong>paramater</strong> (contoh $u-&gt;username), walaupun kita sebetulnya tidak membuat parameter tersebut. Baik sekali kan Doctrine hehe :-) .</li>
<li>Jika anda sudah mengenal CodeIgniter, makan anda tentu ingat bahwa kita pelu memanggil fungsi $this-&gt;load-&gt;model() untuk me-load model. Namun berhubung kita sudah meregistrasikan fungsi <strong>autoload</strong> Doctrine, hanya menulis &#8220;new User()&#8221; sudah cukup</li>
<li>Kita tidak membuat fungsi &#8220;save()&#8221;, karena fungsi tersebut terdapat di kelas Doctrine_Record yang kita extend. Fungsi tersebut menyimpan objek-objek ke dalam database. Ada banyak fungsi-fungsi lainnya yang dapat kita gunakan sebetulnya, kita akan menggunakannya nanti sejalan dengan artikel berseri ini.</li>
<li>Buka: <a href="http://localhost/ci_doctrine_day1/index.php/hello/user_test" target="_blank">http://localhost/ci_doctrine_day1/index.php/hello/user_test</a></li>
</ul>
<p>Anda akan melihat tampilan seperti di bawah ini:</p>
<blockquote><p>2 user telah berhasil ditambahkan</p></blockquote>
<ul>
<li>Sekarang kembali ke phpmyadmin: <a href="http://localhost/phpmyadmin/" target="_blank">http://localhost/phpmyadmin/</a></li>
<li>Telusuri tabel &#8220;user&#8221;</li>
</ul>
<p><strong>OK!</strong> Sekarang anda akan melihat 2 record baru telah dibuat</p>
<div class="mceTemp mceIEcenter">
<dl class="wp-caption aligncenter" style="width: 540px;">
<dt class="wp-caption-dt"><img title="Hasil Pemasukan Objek" src="http://www.phpandstuff.com/wp-content/uploads/2009/10/ci_doctrine_day1_8.png" alt="Hasil Pemasukan Objek" width="530" height="405" /></dt>
</dl>
</div>
<h3><span style="color: #ff6600;">Stay Tuned</span></h3>
<p>Kita baru saja melihat bagaimana caranya meng-install dan men-setup CodeIgniter dengan Doctrine. Agak banyak yang kita lakuakan memang, namun sekarang kita sudah mendapatkan framework MVC yang kuat dan kombinasi dengan ORM.</p>
<p>Di tutorial selanjutnya, kita akan mecoba contoh-contoh yang lebih praktikal dan nantinya akan membuat website yang berfungsi. Anda akan melihat bagaimana mudahnya membuat model dengan menggunakan Doctrine dan mengirit waktu dari harus menulis kodingan CRUD (Create, Read, Update, Delete) berulang-ulang di semua model-model.</p>
<p>Doctrine juga membantu kita untuk menangani relasi antar kelas, dan menghindari kita dari menuliskan kodingan serta query yang kompleks.</p>
<p>Sampai ketemu di seri berikutnya!</p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow: hidden;"><em>Burak Guzel</em></div>
]]></content:encoded>
			<wfw:commentRss>http://www.teknojurnal.com/2010/02/21/tutorial-pemrograman-php-berbasis-mvc-menggunakan-framework-codeigniter-dan-doctrine-bagian-1-setup-dan-instalasi/feed/</wfw:commentRss>
		<slash:comments>57</slash:comments>
		</item>
	</channel>
</rss>

