Rabu, 18 Januari 2012

Konsep PBO PHP 5

Encapsulation
Encapsulation atau pengkapsulan adalah sebuah teknik untuk melakukan penyembunyian informasi yang tidak diperlukan oleh user. Atau lebih spesifiknya menyembunyikan method atau attribute suatu objek dari objek lain. Attribute maupun method disembunyikan dengan cara memberikan modifier private.
Di dalam PHP, terdapat lima keyword penting dalam penyembunyian informasi:

  1. Public, jika menggunaka keyword ini maka data atau fungsi tersebut dapat diakses oleh objek dari luar.
    public $varA, $varB;
    public function publicFunction()
    {
      //bariskode
    }
  2. Private, keyword ini mengizinkan data dan fungsi diakses dari dalam kelas itu sendiri. Data atau fungsi dengan keyword private tidak dapat diakses oleh kelas lain maupun kelas turunannya.
    private $varA, $varB;
    private function privateFunction()
    {
      //bariskode
    }
  3. Protected, mengizinkan data atau fungsi ini diakses oleh kelas itu sendiri ataupun oleh kelas turunannya.
    protected $varA, $varB;
    protected function protectedFunction()
    {
      //bariskode
    }
  4. Final, digunakan untuk mencegah agar fungsi dari {potong} induknya tidak dapat didefinisakan kembali pada fungsi turunan.
    final public function finalFunction()
    {
      //bariskode
    }
  5. Abstract, fungsi ini harus dideklarasikan kembali pada fungsi turunannya yang merupakan kebalikan dari fungsi final.

__AUTOLOAD()
fungsi __autoload() sangat berguna jika kita memiliki banyak file yang di-include dari kelas yang dibutuhkan. Fungsi ini akan melakukan proses pemanggilan otomatis dengan syarat kelas dan file memiliki nama yang sama.
Contoh pemanggilan tanpa fungsi autoload:
require_once "handphone.php";
$hp = new handphone()
$hp->setHpLama("nokia 5320");
$ho->setHpBaru("samsung galaxy SII");
pemanggilan dengan fungsi autoload:
function __autoload($namakelas)
{
  require_once $namakelas.".php";
}
$hp = new handphone()
$hp->setHpLama("nokia 5320");
$ho->setHpBaru("samsung galaxy SII");
variabel $namakelas bebas kita definisikan nama variabelnya

Konstruktor dan Destruktor
Konstructor adalah suatu method dari class yang secara otomatis dijalankan apabila suatu class dihidupkan (instansiasi). Dan sebaliknya, destruktor adalah suatu method dari class yang secara otomatis dijalankan apabila suatu class dimatikan.
class Motivation
{
    function __construct()
    {
        echo "you will";
    }
    function __destruct()
    {
        echo "you believe";
    }
    function proses()
    {
        echo " when ";
    }
}
$obj_orang = new Motivation();
$proses = $obj_orang->proses();
output:
you will when you believe

Pada kode di atas program secara default akan membaca constuct pada awal dan destruct pada akhir. jika sintax $proses = $obj_orang->proses(); dihilangkan, maka secara otomatis tampilan output menjadi:
you will you believe
Overloading
Fungsi overloading di java dapat membuat fungsi lebih dari satu dengan nama fungsi yang sama tetapi punya jumlah parameter berbeda, Sedangkan di PHP bukan seperti itu fungsinya untuk overloading, Di PHP sebagai solusi mengatasi permasalahan  apabila Anda mengakses member properti atau fungsi yang tidak ada didalam kelas tersebut, maka akan otomatis fungsi overloading dieksekusi. Fungsi-fungsi overloading php:
  • __get(), akan dieksekusi apabila Anda melakukan pemanggilan terhadap suatu variabel yang bukan merupakan bagian dari sebuah kelas.
  • __set(), akan dieksekusi apabila Anda melakukan pendefinisian terhadap sebiah variabel yang bukan merupakan bagian dari kelas.
  • __isset(), akan dieksekusi apabila sistem mendeteksi bahwa variabel yang diperikasa bukan merupakan member data dari sebuah objek atau kelas baru.
  • __unset(), akan dieksekusi apabila sistem akan menghilangkan sebuah variabel yang ternyata bukan merupakan member data dari sebuah kelas yang didefinisikan.
Overriding
Overriding adalah ketika Anda mendeklarasikan ulang fungsi, tipedata serta parameter yang sama pada kelas induk dan turunannya. Jika ditinjau dari sudut pandang PHP, maka overriding tidaklah begitu berarti , karena jika membuat fungsi yang sama pada induk dan turunannya maka objek induk masih bisa membedakan antara method tersebut.
Namun terkadang juga diperlukan untuk mendeklarasikan ulang atribut dan operasi yang sama. Dalam melakukan hal ini, kita memberikan nilai atribut yang berbeda pada kelas turunan untuk objek yang sama pada kelas induk.

Serialize dan Unserialize
Serialize adalah suatu teknik di dalam bahasa pemrograman yang digunakan untuk merepresentasikan suatu data/variabel ke dalam string. Ini ditujukan agar data tersebut dapat disimpan di suatu file atau dikirimkan melewati koneksi jaringan ke komputer lain.
Kita bisa bisa menggunakan fungsi serialize() , dan untuk mengembalikan hasil serialisasi tersebut ke bentuk semula (deserialisasi) menggunakan fungsi unserialize(). Serialize dapat disimpan pada cookie, session, database, hidden field menggunakan POST dan lainlain. Untuk contoh kode anda bisa lihat disini
Fungsi ini juga dapat digunakan untuk menyimpan sebuah array ke suatu kolom tabel di databse MySQL. Untuk contoh kodenya bisa dilihat disini.

Inheritance
Inheritance (pewarisan) adalah kemampuan dari sebuah kelas untuk mewarisi seluruh member data dan fungsi kepada kelas turunannya. Dengan demikian, seluruh member data dan fungsi yang ada pada kelas induk juga dimiliki secara langsung oleh kelas turunannya. Namun kelas turunan tetap dapat menambahkan atau memodifikasi atribut-atribut dan method-method dari kelas induknya.

Exception
Secara ideal, semua kesalahan program dapat dideteksi pada saat start atau sebelum eksekusi dilakukan. Akan tetapi, untuk kesalahan yang terjadi pada saat runtime tidak mungkin dihindari. Kesalahaan pada saat ekseksi akan menimbulkan kegagalan program, yang jika tidak ditangani maka menyebabkan program abort.
Banyak sekali kejadian di luar dugaan yang bisa saja terjadi pada program-program yang Anda buat, misalnya disk error, file read-only, koneksi gagal, dan sebagainya. Pada umumnya, exception merupakan pesan kesalahan yang dapat berakibat fatal bagi program, selain itu juga dapat berisi situasi tak terduga lainnya. Nah, dengan melakukan manajemen exception, Anda akan dapat memperbaiki kesalahan yang ada pada program.
Dalam kaitannya dengan orientasi objek, PHP 5 menyediakan mekanisme penanganan kesalahan atau exception handling. Paradigma yang juga lebih dikenal dengan try/throw/catch ini memungkinkan kita untuk melempar objek dari class Exception.
class SQLException extends Exception
{
    public $problem; function __construct($problem)
    {
        $this->problem = $problem;
    }
}

try
{
    ...
    throw new SQLException("Couldn't connect to database");
    ...
}

catch (SQLException $e)
{
    print "Caught an SQLException with problem $obj->problem";
}
catch (Exception $e)
{
    print "Caught unrecognized exception";
}

Referensi:
Buku "PHP 5 PBO konsep & Implementasi" by Stendy bakur

1 komentar:

Berkenalan dengan MEAN Stack

“ This MEAN stack (Mongo, Express, Angular, Node) may one day surpass the simplicity of the LAMP stack (Linux, Apache, MySQL, PHP) for we...