7 days of WordPress plugins, themes & templates - for free!* Unlimited asset downloads! Start 7-Day Free Trial
Advertisement
  1. Code
  2. PHP

Belajar pemrograman berorientasi objek dalam PHP ASAP!

Scroll to top
Read Time: 9 mins

Indonesian (Bahasa Indonesia) translation by Ari Gustiawan (you can also view the original English article)

PHP lebih daripada daripada bahasa scripting. Ini adalah bahasa penuh mampu membangun aplikasi yang sangat kompleks. Dengan memanfaatkan full power dari pemrograman berorientasi objek, Anda dapat mengurangi jumlah waktu Anda menghabiskan pengkodean dan menggunakannya untuk membangun situs yang lebih baik. Tutorial ini akan menunjukkan Anda bagaimana.




Apa itu OOP?

OOP singkatan Object Oriented Programming. OOP adalah paradigma pemrograman yang mana Anda membuat "objek" untuk bekerja dengan. Objek-objek ini kemudian dapat disesuaikan dengan kebutuhan spesifik Anda, untuk melayani berbagai jenis aplikasi sambil mempertahankan basis kode yang sama. Memang cukup berguna.

Apa itu objek?

Objek hanyalah sebuah salinan atau contoh "kelas". Kelas dapat didefinisikan sebagai sebuah "kotak hitam" dari mana kita membuat objek kami dan mengakses ciri-ciri (variabel) dan metode (fungsi). Analogi paling umum yang diberikan ketika menjelaskan kelas dan OOP adalah bagaimana Anda mengendarai mobil: pada dasarnya, Anda memiliki 2 atau 3 pedal, tongkat gigi dan kemudi. Anda tidak perlu (dan mungkin tidak ingin) untuk mengetahui bagaimana mobil bekerja ketika Anda menekan pedal. Anda hanya ingin Anda mobil untuk pergi bolak-balik, kanan dan kiri. Dan OOP justru itu. Anda tidak perlu tahu bagaimana metode kelas bekerja (jika Anda tidak menerapkan itu sendiri), hanya apa yang mereka lakukan. OOP ini juga berguna jika Anda memiliki sejumlah besar objek dari jenis yang sama dalam sistem: Anda hanya perlu membuat objek dan memanipulasi mereka semua dalam cara yang sama, tanpa perlu menulis ulang kode apapun. Selain itu, tujuannya mampu mempertahankan state (nilai-nilai variabel dan semacamnya) seluruh pelaksanaan program.

Implementasi "Car" yang tersembunyi dari kami, namun kami dapat menggunakan kemampuan penuh.

OOP dalam PHP

PHP 5 (meskipun sebagian besar ide-ide dalam artikel ini juga berlaku untuk PHP 4) memiliki dukungan bagus untuk object oriented programming dengan menyediakan kemudahana pembuatan kelas. PHP menyediakan paradigma setiap lain "true" OOP bahasa implementasi (Python dan Java, misalnya), seperti warisan, polimorfisme dan enkapsulasi.

Pewarisan

Ide dasar dibalik warisan adalah bahwa benda serupa berbagi properti umum. Jadi dengan menciptakan kelas "generik", kita dapat memiliki blueprint untuk membuat kelas kami berikutnya. Bayangkan, jika Anda akan, mobil properti: warna, jumlah roda, horsepower, jumlah kursi, dll. Memiliki template ini selanjutnya dapat kami mengkhususkan mobil kami dengan extend kelas ini: menciptakan sebuah mobil balap yang memiliki properti "nitro", atau sebuah truk yang memiliki properti "trailer". Intinya adalah: membuat kelas lebih generik yang berisi sebagian besar atribut Umum dan Anda akan memiliki lebih sedikit pekerjaan yang mendefinisikan objek lain yang hanya sedikit berbeda. Alih-alih menulis ulang seluruh kode, Anda hanya extend properti itu, menghemat banyak waktu dalam proses.

Warisan diagram untuk kelas mobil kami.

Enkapsulasi

Seperti yang dijelaskan sebelumnya, salah satu keuntungan utama dari menggunakan objek adalah bahwa kita tidak perlu mengungkapkan semua anggotanya (atribut atau fungsi); hanya interface yang diperlukan saja. Rincian tidak berguna untuk penggunaan objek-objek ini harus dapat disembunyikan dari sisa objek. Ini adalah apa yang disebut sebagai enkapsulasi.

Tingkat visibilitas

  • public: berarti bahwa seorang anggota kelas yang terlihat dan dapat digunakan / dimodifikasi oleh semua orang
  • private: berarti bahwa anggota kelas hanya dapat digunakan / dimodifikasi oleh kelas itu sendiri
  • protected: berarti bahwa anggota kelas hanya dapat digunakan / dimodifikasi oleh kelas itu sendiri dan akhirnya sub-kelas

Catatan: Secara default, di PHP, seorang anggota kelas bersifat publik kecuali dinyatakan private atau protected. Memeriksa contoh di sini.

Polimorfisme

Polimorfisme adalah karakteristik OOP yang memungkinkan programmer untuk menetapkan arti berbeda atau penggunaan sesuatu dalam konteks yang berbeda - khususnya, untuk memungkinkan anggota kelas untuk melakukan tugas-tugas yang berbeda tergantung pada konteks itu digunakan. Bayangkan Anda memiliki Person kelas dan sub-kelas dua orang: Jepang dan Amerika. Keduanya melaksanakan fungsi bernama talk(), tetapi dengan bahasa yang berbeda dan konteks sosial. Dan sementara kedua dari mereka adalah pada dasarnya orang-orang (seperti mereka berasal dari kelas orang), penerapan fungsi talk() sangat berbeda. Jadi pada dasarnya Anda memiliki dua objek dari kelas orang di mana fungsi talk() bekerja berbeda.

Kotori tangan kita

OK, sekarang untuk real action. Kita akan membuat kelas sederhana untuk menangani ekstraksi informasi dan manipulasi gambar. Selama tutorial ini saya akan menganggap Anda memiliki pemahaman dasar tentang PHP (variabel, membuat fungsi, bekerja dengan kontrol flow statement dan loop). Baca manual GD PHP akan menghilangkan keraguan yang mungkin Anda miliki tentang penanganan fungsi gambar.

Langkah 1: Membuat kelas kami

Kita mulai dengan mendefinisikan kelas kami:

Ini hanya memberitahu kami akan mulai mendefinisikan kelas baru, PHP bernama "Image". Sekarang kita akan mendefinisikan konstruktor kelas. Konstruktor adalah hanya fungsi yang dipanggil ketika membuat objek baru. Dalam PHP 5 ini dapat dicapai dengan dua metode yang berbeda: membuat fungsi umum dengan nama yang sama persis kelas (PHP 4 dan seterusnya) atau dengan membuat sebuah fungsi yang disebut "__construct()" (PHP 5 hanya):

Langkah 2: Membuat konstruktor kelas

Dua potong kode berikut melakukan hal yang sama:

Catatan: Konstruktor kelas selalu public.

Konstruktor kelas harus digunakan untuk memastikan bahwa objek dibuat memiliki jumlah minimal data untuk bekerja dengan; dalam kasus kami, image yang diinginkan.

Dengan demikian, hal pertama yang harus kita lakukan adalah untuk membaca gambar, apa pun jenis itu mungkin. Saat ini, GD library mendukung sejumlah jenis gambar, seperti jpg, png, gif, bmp, dan lain-lain; kita hanya perlu membaca gambar dan menentukan jenis itu.

Jadi apa yang telah kita lakukan? Untuk membuka gambar sebagai mudah sebagai mungkin, kita akan menggunakan GD's fungsi imagecreatefromstring (yang mengambil serangkaian biner data sebagai inputan), imagecreatefromjpeg, imagecreatefrompng atau imagecreatefromgif, sebagai contoh.

Jadi kita mencoba untuk membuka file gambar dan menetapkan file pointer ke $fp, dan, dalam kasus kegagalan, mengakhiri program eksekusi.

Selanjutnya, kita membuat string kosong untuk menyimpan data kami...

.. .dan membaca seluruh berkas, menggabungkan data dibaca dengan isi baru dibuat string kami.

Sekarang kita hanya perlu membuat gambar kami menggunakan data yang kita baru saja membaca...

... dan membuat objek untuk menggunakan semua fungsi ini.

Catatan: jpg, png, gif, dan kebanyakan file gambar harus dibaca dalam binary mode, maka "rb" melewati sebagai argumen kedua fungsi fopen. "r" berarti read-only dan "b" berarti biner.

Langkah 3: Menentukan atribut class dan metode

Dalam bentuk sekarang itu kelas kami belum berguna. Jadi kami akan menambahkan beberapa atribut dan metode untuk membuatnya lebih berguna. Jadi kita akan mulai dengan 1: menentukan beberapa variabel internal (Perhatikan Deklarasi "private" visibilitas sebelum setiap variabel)

Dan 2: sebuah metode untuk menampilkan gambar.

Dalam langkah ini, kami hanya membuat beberapa atribut kelas (gambar, lebar, tinggi dan mimetype) untuk menyimpan data objek. Kemudian kami membuat beberapa modifikasi untuk menetapkan gambar dibuat untuk atribut class kami $image...

... dan extract gambar ke variabel kelas kami sisa (membaca dokumentasi pada getimagesize untuk memahami bagaimana membaca informasi gambar):

Selanjutnya kami menciptakan sebuah fungsi yang output gambar untuk browser dengan mendefinisikan header yang sesuai (Baca lagi di header http berikut disini) dan menggunakan fungsi sesuai (dengan switch statement) untuk output gambar berdasarkan mimetype gambar original (untuk ini Tutorial kita akan hanya mendukung jpg, png, dan gif tetapi, seperti yang saya katakan sebelumnya, GD mendukung banyak format lain. Membaca dokumentasi php untuk lebih).

Jadi apa itu "$this" di sana? "$this", dalam PHP, merujuk pada kelas itu sendiri, dan digunakan untuk menunjuk ke kelas atribut atau fungsi. Dengan demikian, $this->image merujuk le atribut class bernama "$image" dan $this->image =... merubah nilai atribut class. Jika Anda menulis $image =... Anda hanya akan membuat variabel lokal baru bernama "$image", tersedia secara eksklusif untuk durasi fungsi. Ini adalah salah satu hal utama untuk membayar perhatian ketika membuat kelas di PHP.

Kami tidak terlalu berguna (yet!) menampilkan metode.

Langkah 4: Mendefinisikan kami "Thumbnail" sub-kelas

Sekarang kelas kami tidak sangat berguna. Tentu, kita dapat membaca gambar dan menampilkannya, tapi hanya itu. Sekarang kita akan membuat sub-kelas untuk membuat thumbnail kami. (Kita benar-benar tidak perlu untuk membuat sub-kelas, tapi kami akan demi tutorial, untuk menunjukkan pewarisan dan polimorfisme). Jadi, untuk pewarisan untuk bekerja dengan baik kita perlu sedikit mengubah definisi super-class (Image). Kita hanya perlu mengubah visibilitas variabel kelas kami dari "private" untuk "protected". Dan sekarang kita akan membuat konstruktor subclass kami.

Jadi apa tepatnya kita lakukan di sini? Kami membuat kelas baru, berasal dari asli kami, berarti bahwa kita dapat mengakses semua atribut public dan protected dan metode. Kita sebut konstruktor kelas super, bertanggung jawab untuk membaca gambar dan mengekstrak informasi. Konstruktor kelas sub tidak memanggil constructor superclass yang jadi kita perlu menyebutnya secara eksplisit.

Sekarang kita membuat gambar baru untuk thumbnail kami, diisi dengan width dan height gambar:

Resample gambar (resize) yang asli ke yang baru, untuk membuat thumbnail:

Dan akhirnya modifikasi gambar original mengandung thumbnail bukan image ukuran penuh:

Dan coba tebak? Kita tidak  perlu untuk menulis sebuah fungsi baru untuk menampilkan thumbnail karena prinsip yang sama berlaku, Apakah Anda menampilkan gambar ukuran penuh atau thumbnail. Setelah semua, itu adalah masih sebuah gambar! Jadi kita hanya perlu untuk memanggil fungsi display(), yang didefinisikan di kelas super, dan selesai!

Kami selesai kelas dan masing-masing sub-kelas.

Dan menyimpulkan bahwa kami tutorial. Sebagai latihan, sarankan Anda menerapkan fungsi untuk menghemat thumbnail dihasilkan untuk disk daripada outputing langsung (dimana Anda harus menerapkan fungsi? Di super atau sub-kelas?). Good luck dan memeriksa zip disediakan untuk contoh penggunaan dan kelas-kelas penuh dikembangkan di sini (Anda server yang mendukung PHP untuk menge-test itu).


Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.