Dari kita. Buat kita.

#24 Belajar Object Oriented PHP 101

Posted: November 24th, 2009 | Author: Ronald Widha | Filed under: podcast | Comments  

jimmi-kembaren

Direkam 12 November 2009
26 menit 34 detik

Transkrip (WIKI)

Ronald Widha selama ini menganggap remeh bahasa PHP dan baru saja belakangan ini menyadari bahwa PHP melalui PHP5 yang muncul 5 tahun lalu sudah banyak berubah. Ronald Widha berdiskusi dengan Jimmi Kembaren dari phpkita.com untuk belajar lebih lanjut apa bedanya PHP5.

Download
MP3 18 MB
MP3 low 6.2MB

Show Notes
What’s new in PHP5?
PHPKita

berbagi dengan yang lain?
  • FriendFeed
  • TwitThis
  • del.icio.us
  • email
  • Facebook

  • iyank4
    kalo ngomong Object kurang lengkap rasanya kalo ngga ngomong python. Mungkin bisa di kupas konsep OOP di python dengan OOP di bahasa yang lain, (atau mungkin Class Oriented Prongramming)
  • Agi
    ngomong2 tentang prototype-oriented spt yg disingung di akhir podcast, sekitar setahun yg lalu saya pernah membuat sebuah tulisan di salah satu blog saya yg lama http://unwrittencode.blogspot.com/2008/09/proto...

    tulisan itu (dan tulisan lain di blog itu) terinspirasi setelah saya menonton seri screencast dari PragProg berjudul "The Ruby Object Model and Metaprogramming", pada seri pertama screencast tsb dijelaskan mengapa si pembuat (Dave Thomas) menganggap orang melakukan class-oriented programming, karena setiap kali membuat aplikasi secara OO maka yg muncul pertama kali di otak bukan objek, tapi malah class, kemudian dituangkan dalam class diagram.

    nah karena sebagian besar pikiran tercurahkan kepada class-class (bukan objek), maka muncul ide mengapa tidak dinamakan class-oriented aja.


    Agi
  • Agi
    Menarik sekali, dikatakan bahwa business logic diletakkan di bagian Controller, so Model hanya dijadikan DAO?
    Kalau saya lebih cenderung ikut pola yg meletakkan business logic di Model. Controller tugasnya hanya utk mengatur, mengatur komunikasi antara model dan view, mengatur representasi data, dsb.

    Agi
  • @agi
    ya, aku jg lebih setuju dengan kamu. tapi memang banyak pattern berbeda yang bisa dimasukkan ke MVC. ada yang menganggap model sebagai DTO aja, jadi harus pake DAO, dan akhirnya controller mengandung business logic. Ada yang pake Active Record jadi model bisa menghidrasi dirinya sendiri. Ada yang pake bukan cuma Model, tapi jg ViewModel (bahkan FormModel), jadi representasi data sepenuhnya ada di View. Ini semua tergantung kebutuhan dan seberapa purist kita mau stick to the original pattern.

    koq agionagile.tumbler.com-nya ga bisa dibuka ya?
  • Agi
    ups, saya udah lama nggak pakai tumblr lagi, tadi profil di disqus blm saya update, hehe..
  • woodenlink
    Wah, menarik neh bahasan kali ini.
    cuman kurang dalam ...
    ane programmer php semenjak jamannya HTML masih dicampur php code, naudzubillah,
    trus jaman kode dipisah pake template engine (smarty, pat-template, dll), agak2 mvc lah :D

    Gara2 booming mvc framework sekarang lagi tertarik ngoding PHP yg OOP.
    Lain kali dibahas lebih detil dong, kapan make interface, abstract class, sampe ke design pattern-nya.
    Sukses buat temen macet!!

    @ronald, susahnya Hashtable kita mesti inget dataype apa yang di Add, soalnya ntar waktu narik harus di-casting, kalo di PHP dinamis, masukin apa aja, tarik apa aja dan diolah tanpa prasangka :D
    Di PHP bisa nambahin method ke object on the fly, kelas yang dibikin perlu method dari kelas lain, bisa diimport, gini kali maksudnya reusable ya.
  • wah ide bagus. mungkin kesempatan lain kita bisa ngebahas konsep-konsep oop saja.
  • Nice Episode ;)

    yang lebih sakti itu array-nya php.. bisa gak di c# bikin array indexnya pake string dan value tiap itemnya beda type (both string and integer in one array) ?? :p
    eg: http://hadiariawan.web.id/something/temanmacet.php

    Lucu ya... hihihihi...

    ohya satu lagi, kalo pake asp.net mvc semua method yang ada parameternya musti di define/register route di Global.asax.cs, kalo pake codeigniter (framework mvc php) ga perlu.. :p

    php itu sakti dan lucu... ;)
  • c# jg bisa koq..pake name hashtable http://msdn.microsoft.com/en-us/library/system.... ;)

    btw, route itu pake pattern matching loh. ga usah setiap method.
    tapi setuju koq..php itu sakti dan lucu!
  • ouw iya yaah.. gini nih kalo kurang pengetahuan.. tiap perlu collections yang dipakek cuman ArrayList :p
    kalo gitu php ama c# sama sama lucu deh... aheuaheuaheu..
  • alo,
    not sure whose to ask, ronald ato jimmy, and whether this is the right place to discuss, but since ronald just wrote about design pattern and teman macet bahas PHP OOP, tolong dikasih arah ya :)
    saya nyoba implementasi OOP di aplikasi lawas yang procedural dan sudah jalan laaamma,

    pelan2 yang bisa direfactor jadi object saya refactor. Cuman saya mbentur masalah gini, ada beberapa fungsi untuk formating tampilan letaknya dalam file (misal) big.functions.php (all functions goes here).
    Gimana caranya class yang saya bikin, tetep bisa make fungsi2 dalam big.functions.php tapi tetep loosely coupled? ada pattern untuk ginian gak?
    tadinya mo pake strategy pattern, jadi semua yg berhubungan ama tampilan saya masukin kelas class.layout.php, tapi mengcopy semua fungsi yang ada keliatannya kurang cerdas dan to much works :D
  • sperti yang Jimmi bilang di podcastnya, OOP adalah mindset. Mengubah kode prosedural (baca: Transaction Script) untuk menjadi objek oriented bukan hal yang mudah, karena arahnya sangat berbeda.

    Aku akan melakukan analisa, actor-actor apa saja yang bermain di konteks aplikasi kamu. Misalnya Customer, Shopping Cart, Shopping Cart Item, Cashier dsb.

    Kemudian pikirkan action dan karakteristik apa yang dimiliki oleh actor2 ini.

    Alhasil awalnya yang mungkin berawal dari:

    ProsesPembayaran( namaCustomer, emailCustomer , barang[], total harga)

    akan berubah menjadi.

    ShoppingCart
    {
    string[] barangbarang
    }

    Customer { string nama; string email, ShoppingCart barangBelanjaan}

    Cashier
    {
    prosesPembayaran( Customer )
    {
    // cara ngitung harga-harga
    // cek barang apakah diskon
    }
    }
  • ic, berarti perombakan gede2an dong :(
    harapannya awalnya pengin pelan2 yang bisa dijadiin kelas dijadiin kelas dulu, sampe akhirnya semua code full OOP, tanpa downtime.

    OOP itu mindset, stuju banget. makanya agak susah untuk programmer PHP yg berangkat dari spagetti code untuk terbiasa ama konsep ini, karena PHP sendiri gak mengharuskan everything in object dalam penulisan scriptnya.
  • yang bisa kamu lakukan mungkin adalah mulai saat ini kamu ngerjain fitur baru dengan cara object oriented. dan transisi semua bisnis logic dari transaction scripts ke oo model kamu.
    AKhirnya lama2m transaction scripts kamu akan memanggil oo model kamu jg.

    Dan layer big.functions.php itu bisa diganti namanya menjadi shopping.service atau shopping.facade.php
blog comments powered by Disqus
Get Adobe Flash playerPlugin by wpburn.com wordpress themes