Konsep Dasar Class dan Object PHP 5

Saya ingin sedikit berbagi pengenalan konsep dasar class, object, dan properties pada PHP 5.

In PHP 5 there is a new Object Model. PHP’s handling of objects has been completely rewritten, allowing for better performance and more features.

Dari keterangan diatas dapat dijelaskan bahwa object PHP5 memuat pemodelan object yang baru dan dukungan object yang lebih lengkap untuk mengatasi berbagai macam kompleksitas, dan PHP5 memberikan performa dan fitur yang lebih baik dibandingkan pada versi sebelumnya.

Sebenarnya PHP4 sudah mempunyai dukungan cukup untuk object, hanya saja, PHP4 dan PHP5 ada perbedaan dalam handling object. Menurut saya, PHP5 lebih ke arah Java saat assigning object. Penggunaan class, penciptaan object, inisialisasi variable yang dipanggil oleh object, serta penggunaan fungsi dan pemanggilannya dengan object di PHP5, “nyaris sama” dengan Java. Hanya saja pada PHP5 cenderung lebih luwes, diantaranya nama file-nya sendiri tidak harus sama dengan nama class.

 

Class

Setiap pendefinisian kelas (class) dimulai dengan nama kelas itu sendiri, penamaannya bisa apa saja, asal tidak menggunakan nama predefined-variable PHP yang sudah ada.

< ?php
 
class jenisMakanan 
{
        // properties
        // methods
}
 
?>

Sebuah kelas dengan nama jenisMakanan sudah berhasil kita buat, tetapi belum dapat dilakukan apa-apa pada kelas tersebut, karena kita belum menambahkan properti (properties) atau metode (methods) didalamnya.

< ?php
 
class jenisMakanan 
{
        function ringan() 
        {
                echo "krupuk udang";
        }
}
 
?>

Nah, sekarang kita sudah menaruh sebuah fungsi ringan() pada kelas makanan. Fungsi pada kelas disebut juga metode (method). Kelas tersebut belum dapat digunakan, karena kita belum mendeklarasikan sebuah instance pada kelas tersebut. Untuk dapat menggunakan kelas tersebut, beserta metode dan properti-nya, maka harus dibuatkan instance dari kelas tersebut menggunakan perintah ‘new ‘. Dengan mendeklarasikan sebuah instance, maka kita dapat menciptakan sebuah obyek (object).

< ?php
 
class jenisMakanan 
{
        function ringan() 
        {
                echo "krupuk udang";
        }
}
 
$makanan = new jenisMakanan();
$makanan->ringan(); // Hasil: krupuk udang
 
?>

 

Object

Seperti pada contoh diatas, digunakan “new” untuk menciptakan sebuah instance dari kelas jenisMakanan dan ditetapkan (assigned) pada variabel $makanan, kemudian memanggil metode ringan() dengan obyek $makanan.

Yang perlu diperhatikan adalah perbedaan antara kelas dengan obyek. Kelas, pada contoh diatas adalah jenisMakanan(), dan $makanan adalah sebuah obyek (object). Kelas hanya bisa dibuat satu saja, semisal dibuat dua kelas dengan nama yang sama, yaitu jenisMakanan, maka akan terjadi kesalahan (error). Walaupun begitu, kita dapat membuat beberapa instance menggunakan satu kelas yang sama.

< ?php
 
class jenisMakanan
{
        function ringan() 
        {
                echo "krupuk udang";
        }
}
 
$makanan = new jenisMakanan();
$makanan->ringan(); // Hasil: krupuk udang
 
$makanan2 = new jenisMakanan();
$makanan2->ringan(); // Hasil: krupuk udang
 
?>

Dari contoh diatas dapat kita lihat terdapat dua instance yang dibuat dari kelas jenisMakanan dimana kita mempunyai 2 obyek, $makanan dan $makanan2. Masing-masing instance memanggil metode ringan().

 

Properties

Sebuah kelas dapat memiliki variabel-variabel yang disebut properti (properties) atau bisa disebut juga attributes. Tipe-tipe properti tersebut adalah public, private, dan protected.

< ?php
 
class jenisMakanan 
{
        public $rasa;
 
        function ringan() 
        {
                echo "krupuk udang" . " " . $this->rasa;
        }
}
 
$makanan = new jenisMakanan();
$makanan->rasa = "enak sekali";
$makanan->ringan(); // Hasil: krupuk udang enak sekali
 
?>

Pada contoh diatas, kita telah menambahkan sebuah baris, yaitu “public $rasa;“, yang disebut juga access modifiers. Maksudnya adalah kita telah menambahkan sebuah properti public dengan nama $rasa pada kelas yang telah kita buat sebelumnya. Pada metode ringan() juga sudah ditambahkan properti $rasa, dimana variable dari properti $rasa akan ikut ditampilkan. Dapat anda lihat, digunakan $this->rasa untuk memanggil properti $rasa.

Pseudo-variable, $this, adalah sebuah variable yang sudah tersedia ketika suatu metode dipanggil oleh sebuah obyek. $this adalah sebuah acuan yang dapat digunakan untuk memanggil sebuah metode atau properti pada sebuah kelas.

< ?php
 
class MyClass 
{
        public $public = 'Public';
        protected $protected = 'Protected';
        private $private = 'Private';
 
        function helloWorld() 
        {
                echo $public;
                echo $protected;
                echo $private;
        }
}
 
$object = new MyClass();
 
echo $object->public;
// Hasil: Public
 
echo $object->protected;
// Fatal error: Cannot access protected property MyClass::$protected
 
echo $object->private;
// Fatal error: Cannot access private property MyClass::$private
 
$object->helloWorld();
// Hasil: Public, Protected, dan Private
 
?>

Pada contoh diatas dijelaskan bahwa.

  • Properti public dapat di akses dari dalam kelas itu sendiri maupun dari luar kelas. Public adalah properti bebas yang dapat diakses darimana saja.
  • Properti protected dapat di akses dari dalam kelas itu sendiri, tetapi tidak dapat diakses dari luar kelas. Protected dapat di akses pada kelas itu sendiri (parent class) maupun dari kelas lain (inherited class) yang berasal/pewarisan dari kelas tersebut (parent class). Hal ini dapat dilakukan dengan inheritance yang dijelaskan pada bagian akhir tulisan ini.
  • Properti private dapat di akses dari dalam kelas itu sendiri, tetapi tidak dapat diakses dari luar kelas maupun dari kelas lain.

Seperti halnya properti, kontrol terhadap metode/fungsi dalam kelas dapat dilakukan menggunakan access modifiers.

< ?php
 
class MyClass 
{
        public function MyPublic() 
        {
                // Kode disini.
        }
 
        protected function MyProtected() 
        {
                // Kode disini.
        }
 
        private function MyPrivate() 
        {
                // Kode disini.
        }
 
        function Foo() 
        {
                $this->MyPublic();
                $this->MyProtected();
                $this->MyPrivate();
        }
}
 
$object = new MyClass();
$object->MyPublic(); // Dapat berjalan dengan baik
$object->MyProtected(); // Terjadi kesalahan (error)
$object->MyPrivate(); // Terjadi kesalahan (error)
$object->Foo(); // MyPublic, MyProtected, MyPrivate berjalan baik.
 
?>

 

Inheritance

Salah satu kelebihan menggunakan sebuah kelas yaitu kita dapat membuat kelas inherits. Pewarisan (inheritance) dilakukan dengan memperpanjang (extends) kelas yang sudah ada dengan cara membuat kelas baru yang mewarisi (inherits) semua properti dan metode yang ada pada kelas aslinya (parent class).

< ?php
 
// parent class
class jenisMakanan 
{
        public $public = "krupuk udang";
        protected $protected = "enak sekali";
        private $private = "tidak enak";
 
        // metode/fungsi disini
}
 
// inherits class
class rasaMakanan extends jenisMakanan 
{
        function rasa1() 
        {
                echo $this->public . " " . $this->protected;
        }
 
        function rasa2() 
        {
                echo $this->public . " " . $this->private;
        }
}
 
$makanan = new rasaMakanan();
$makanan->rasa1(); // Hasil: krupuk udang enak sekali
$makanan->rasa2(); // Hasil: krupuk udang
 
?>

Pada contoh diatas, terlihat jelas bahwa properti public dan protected dapat ditampilkan dengan memanggil obyek yang ada pada kelas inherits, yaitu kelas rasaMakanan. Sedangkan properti private tidak dapat ditampilkan pada kelas inherits tersebut. Perlakuan access modifiers pada metode-metode yang ada pada kelas tersebut sama perlakuannya terhadap properti-properti seperti yang sudah dijelaskan.

Author: Andy Pradhana (pradhana\at\netzone.web.id)

Last edited: 16 May 2008

 

25 Responses to “Konsep Dasar Class dan Object PHP 5”

  1. Dicky on 24 May 2008 11:41:06

    Terima kasih banyak..info nya membantu sekali mas….

    Tapi…boleh gak saya minta YM nya..banyak yg mau d tanya nih mas…

    tengkiu…

  2. Pradhana on 25 May 2008 07:53:01

    Kalo ada yg perlu ditanyakan, silakan pm.
    Akan saya bantu sebisanya.
    YM: masdhana

  3. toto on 06 June 2008 20:47:53

    akhirnya nemu juga basic php 5..

    terima kasih banyak.

    nanti saya mau add ym nya juga.

  4. nihen on 28 June 2008 17:43:39

    veri nice..
    thx alot

  5. xfree on 08 July 2008 16:53:02

    broo, minta lanjutannya dunk yang make database, gimana yah..?

  6. pradhana on 12 July 2008 21:14:50

    ya coba nanti saya buat.. masih dikejar deadline nih :p

  7. diki dewanto on 15 July 2008 21:14:21

    halo mas..

    trimakasih atas bantuanya slama ini..

    saya coba beralih ke OOP mas..

    mohon bantuanya ya lewat YM..

    hehehe..

    keep on code!

  8. Hari Setiaji on 05 August 2008 14:01:36

    Terimakasih mas, saia pngen sekali blajar inheritance di PHP, ampe pusiiing..!! OOP di PHP tuh mantab buangeetzz…

  9. awang on 10 August 2008 22:03:04

    Wah penjelasan yang sangat membantu mas, oya nanti kalo ada pertanyaan lebih lanjut aq hub lewat Ym Boleh ya? Makasih mas.

  10. x_san on 13 August 2008 08:22:55

    wa…., setelah muter muter nyari pencerahan tentang object dan class nya PHP, akhirna nemu juga yang bahasa indonesia :D , baca PHP manual yang pake bahasa inggris mumet hehehe

    btw tengkayu wt tulisannya.. :)

  11. x_san on 13 August 2008 08:35:37

    minta ijin copy paste ya mas… :D
    tak simpen’e

    hehhe

  12. pradhana on 13 August 2008 08:37:13

    Silakan, ilmu milik kita bersama :)

  13. irfan on 26 September 2008 13:41:50

    makasih banget mas,…penjelasannya cukup gamblang,…jadi lebih ngerti,….!!!n_n.oy q juga maw ijin add YMnya jga ya,….thanks

  14. bud_bud on 05 October 2008 16:02:18

    ijin add ym ya mas^^

  15. ockee on 20 October 2008 16:03:32

    Halloo Mas,
    mau izin add YM nya
    thx

  16. lukman on 30 October 2008 09:07:51

    boleh minta aplikasi sederhananya mas,soalnya aku masih newbe di OOP

  17. ali on 10 November 2008 07:43:28

    Saya mau tanya mengenai fungsi __construct dalam suatu class.

    Kebanyakan bisa menerima parameter.
    Tetapi kadang-kadang menolak pemakaian parameter.

    Bisa tolong ? Trims.

  18. egy on 17 December 2008 19:21:25

    mas, kayaknya mas master php ya?
    boleh ym-an ga?
    banyak yang mau ditanyain nih (maklum baru belajar ^_^)

  19. a3m on 24 January 2009 01:12:02

    thanks mas, tutornya bagus banget, apalagi buat sy yang pengen banget belajar class… keep share

  20. Ya Ampiuuuuun.... on 26 February 2009 17:28:05

    Merasa terenyuh dengan tulisannya :D
    Ingin rasanya langsung menghadap ke depan KOmp, pengang keyboard trus rajin2 CTRL + Tab (sambil liat tulisan ini) :) )

    OOP nya itu lho….
    Detil banget.
    Thanks banget ya……

  21. kharis on 18 March 2009 20:32:27

    Saya sangat ingin sekali belajar PHP classes mas, hubungi Saya di YM Saya di kharis.hidayatulloh yah!

  22. farisvanjava on 07 August 2009 10:32:19

    Boss saya add juga YMnya mau tanya2 lebih banyak lagi tentang PHP
    ;-)

  23. ariz on 14 December 2009 18:28:09

    makasih atas infonya..
    lam knl..

  24. azizi on 26 January 2010 17:08:29

    ada xklebihan or ciri2 class dan objek???bantu sy…

  25. sahat on 19 February 2010 12:06:56

    waaaaaaaahhhhhhhh..
    mantraaaaaaaapp, tinkiu

Leave a Reply