Mau Pakai Framework PHP Yang Mana?

Sudah lama tidak update isi blog, kalau gak salah posting terakhir sebelum ini di bulan desember, sudah hampir 2 bulanan lah. Selama 2 bulan ini tentu banyak sekali kejadian yang terjadi di sekitar penulis tapi ya memang lagi tidak ada ke selo an untuk menulis.

Yang terbaru adalah meletusnya gunung kelud kemarin dan abunya sejak kemarin menghiasi setiap sudut jogja dan sekitarnya yang membuat berdebu, tadi lewat ringroad utara lumayan debunya.

Berhubung penulis adalah orang yang setiap hari bekerja dalam lingkungan pengembangan web dengan php tentu saja selalu bersinggungan dengan yang namanya framework. Dari dulu awal-awal kenal Codeigniter dan sampai sekarang masih menggunakan juga 😀 pernah mencoba Kohana, Fuelphp, Yii dan tentu saja yang sedang naik daun dan sangat wow sekarang ini Laravel. Bahkan blog ini pun dibangun dengan Laravel.

Tapi kalau menurut penulis pribadi yang namanya framework itu tidak perlu dipaksakan, mau pakai yang mana atau gak pake sama sekali itu hak pribadi, ya semacam HAM lah kalau di dunia manusia. Walau Laravel yang sedang wow wow nya dan menggunakan teknologi paling mutakhir ya gak wajib dipakai kok. Contohnya saja misal kita mau kerja di sebuah kantor dan ternyata aplikasi yang dibangun masih pake codeigniter yang walau kita anggap itu sudah jadul jika dibanding laravel yang wow tadi ya gak mungkin to kita tiba-tiba minta rewrite sistem yang dibangun dengan codeigniter itu dengan laravel? bilang saja sama yang nginterview “kalau gak rewrite ke laravel saya gak mau masuk kantor sini!” paling dalam hati yang nginterview cuma bilang “siapa elo?” mending sih kalau cuma dalam hati, kalau malah diomelin terus suruh pulang? kalau bujang sih enak gak kerja masih bisa minta ortu, la kalau yang sudah berkeluarga? ya gak bisa gitu-gitu banget. Kalau kata paman @tediscprit “katresnan always win”, idealisme pikir belakangan yang penting halal 😀

Kalau memang selo dan punya kemampuan untuk menentukan sih gak masalah mau pake framework yang mana, ada di lingkungan yang semuanya cuma bisa Codeigniter terus minta semua harus menggunakan Laravel kemudian semua sistem yang ada di rewrite, tentu butuh waktu dan effort yang tidak sedikit.

Jadi mau pake apa? terserah saja, yang penting halal dan migunani tumraping liyan, minimal migunani buat keluarga 😀 karena ngomongin framework php itu gak akan ada habisnya, dah kayak debat kusir gak ada guna.

Upgrade Ke Laravel 4.1

Jadi tadi malam laravel merilis versi terbarunya, laravel 4.1 dan tanpa menunggu lama, blog ini langsung penulis upgrade 😀 untuk langkah-langkah upgrade dari versi 4.0 ke versi 4.1 bisa dilihat disini. Sedang untuk dokumentasi nya yang terbaru bisa dicek disini.

Sejauh hanya di bagian pagination nya yang bermasalah, tampilannya jadi list kebawah dan penulis masih males buat ngeceknya, biarin aja lah. Mungkin kapan-kapan sembari mengerjakan beberapa todolist untuk blog ini yang sudah tertunda selama berbulan-bulan 😀

Contoh Sederhana Marionettejs

Setelah sekian lama menggunakan javascript secara biasa saja, ya sekedar load javascript gunakan fungsi2 nya dll dll. Beberapa waktu ini baca-baca mengenai beberapa cara lain menggunakan javascript, atau mungkin lebih tepatnya penggunaan teknologi baru, setidaknya bagi saya, dalam ber javascript. Mungkin sudah banyak yang tahu mengenai angularjs, emberjs, backbonejs dll. Semacam framework dan library javascript yang menggunakan pattern mvc. Katanya sih untuk memudahkan, tapi bagi saya tetap mempersulit karena harus belajar lagi. Setelah baca-baca entah kenapa saya pribadi tertarik mencoba marionette js, semacam plugin(atau apalah namanya) yang dibuat untuk backbonejs. Sila cari dan baca-baca sendiri apa itu backbone dan apa itu marionette. Kenapa tertarik dengan marionettejs? jujur karena namanya, awalnya pengen nyoba emberjs tapi kok namanya gimana gitu, ember, kurang menarik bagi saya, lebih keren marionette :))
Oke, simple saja, untuk uji coba saya implementasikan untuk bagian “panel” (klik tulisan panel di kiri atas akan muncul kotak berisi last post dan last comment). Masih sangat sederhana karena ini pertama kali menggunakan marionettejs.
Pertama, silahkan download dulu dari file-file javascript yang dibutuhkan dari website nya ada link download nya kok disitu gak usah takut, setelah itu extract dan seperti biasa load file-file javascriptnya di halaman web.
Siapkan template untuk menampilkan datanya:

<script type="text/template" id="last-post-ul">
<h3>Last Post</h3>
<ul></ul> 
</script>
<script type="text/template" id="last-post-li">
 <a href="{{ URL::to('/view/<%= slug %>') }}"><%= subject %></a>   
</script>
<div id="panelcontent" class="span12" style="display:none;">
    <div id="last-post" class="span4"></div>
</div>

Buat aplikasi marionette js nya:

var App = new Backbone.Marionette.Application();
App.addRegions({
    mainRegion:"#panelcontent",
    lastpost:"#last-post",
});
App.on("initialize:after",function(){
    if(Backbone.history) {
        Backbone.history.start();
    }
});

Untuk menampilkan last post, saya buat sebuah module:

App.module("LastPostModule",function(Mod,App,Backbone,Marionette,$,_){
})

didalam module ini nantinya akan dibuat model, proses mengambil data dan menampilkannya lewat controller dan view.
Untuk view nya sendiri dibuat seperti ini:

var postRow = Backbone.Marionette.ItemView.extend({
    template: '#last-post-li',
    tagName: 'li'
});
var PostList = Backbone.Marionette.CompositeView.extend({
    template: '#last-post-ul',
    itemViewContainer: 'ul',
    itemView: postRow
});

di view ini kita mendefinisikan tampilan untuk daftar last post yang akan ditampilkan.
Untuk modelnya, kita definisikan seperti berikut:

var LastPost = Backbone.Model.extend({
    defaults: {
        'slug': null,
        'subject':null
    }
});

slug dan subject merupakan variabel isi dari data modelnya. Kemudian kita definisikan bahwa data model adalah collection, ini mungkin semacam array/object yang berisi data last post yang akan kita gunakan, untuk datanya sendiri nanti akan berformat json, kira-kira seperti ini:

[
   {
      "subject":"Terlalu Fanatik Itu Tidak Baik",
      "slug":"terlalu-fanatik-itu-tidak-baik"
   },
   {
      "subject":"Ikuti Yang Sesuai Keinginan",
      "slug":"ikuti-yang-sesuai-keinginan"
   },
   {
      "subject":"RSS Feed",
      "slug":"rss-feed"
   },
   {
      "subject":"Sego Wiwit",
      "slug":"sego-wiwit"
   },
   {
      "subject":"Codeigniter Dijual?",
      "slug":"codeigniter-dijual"
   }
]
var PostC = Backbone.Collection.extend({
    model: LastPost
});

Setelah itu kita buat controllernya:

var Controller = Marionette.Controller.extend({
});

kemudian kita buat fungsi dari controller yang akan dieksekusi untuk menampilkan data:

initialize: function(options) {
    this.region = options.region
},
lastpost: function() {
    var post = new PostC();
    var postList = new PostList({ collection:post });

    post.fetch({url: '{{ URL::to("lastpost") }}',reset:true });

    this.region.show(postList);
}

bagian:

var post = new PostC();
var postList = new PostList({ collection:post });

mendefinisikan data dan view yang akan digunakan.
bagian

post.fetch({url: '{{ URL::to("lastpost") }}',reset:true });

untuk mengambil data last post yang akan dieksekusi via request ajax
dan terakhir

this.region.show(postList);

untuk menampilkan data.
Setelah itu kita buat initialisasi agar fungsi lastpost tersebut dijalankan:

Mod.addInitializer(function() {
    Mod.controller = new Controller({
        region: App.lastpost
    });
    Mod.controller.lastpost();
});

dan terakhir jalankan aplikasi marionette nya:

App.start();

Sebenarnya masih ada banyak sekali fitur yang bisa membuat script contoh diatas lebih singkat dan lebih efisien, tapi berhubunng baru nyoba sebatas itu ya itu dulu saja, mohon dimaafkan kalau kurang jelas karena saya sendiri juga belum terlalu ngerti. Jika ingin melihat script secara lengkap bisa dengan melihat source halaman ini.

Codeigniter Dijual?

Awalnya baca dari twitter tentang ini, gak tau juga bahasa tepatnya, dijual atau gimana. Yang jelas pihak Ellislah selaku pemilik dan developer utamanya sudah bersiap mengucapkan selamat tinggal.

Padahal kemarin baru saja keluar versi barunya, versi 2.1.4 setelah versi 2.1.3 nya keluar tahun lalu. Gak tau juga kelanjutannnya, apakah versi 3 nya akan semakin bagus atau malah mati, kita tunggu saja. Yang jelas sayang sekali kalau framework ini sampai mati, penggunanya banyak dan mudah dipelajari meskipun secara teknologi *halah* sudah banyak ketinggalan dibanding framework lain.