• Tidak ada hasil yang ditemukan

Buku Belajar Santai OOP PHP

N/A
N/A
Nuri Muntashir Zakiy

Academic year: 2023

Membagikan "Buku Belajar Santai OOP PHP"

Copied!
199
0
0

Teks penuh

Jika belum, ada baiknya Anda mempelajari terlebih dahulu dasar-dasar pemrograman PHP agar lebih mudah memahami apa yang akan saya sampaikan pada buku ini. Jangan lupa, saya menantikan masukan dan koreksi Anda jika ada kesalahan ketik, salah kode, atau kesalahan pada buku ini agar buku ini bisa lebih baik lagi. Jangan malu untuk bertanya melalui WhatsApp, Facebook, Telegram atau email jika Anda kesulitan memahami tulisan di buku ini.

Saya sangat berharap Anda puas dan dapat memahami OOP setelah membaca buku ini.

Apa itu OOP

Kelebihan OOP dibandingkan procedural

Bahasa yang mendukung konsep Pemrograman berba-

Pengertian Class

Contoh Class

Karena kelas merupakan prototipe, maka kelas tersebut tidak akan dipetakan di memori (RAM) dan objeknya akan dipetakan di RAM.

Pengantar

Melihat Kembali Class Mobil

Property

Method

Constanta

Keyword $this

Kata Kunci $this dan self 15 Dalam pemrograman berbasis objek, kata kunci $this pasti ada, meskipun cara penulisan dan mungkin namanya berbeda. Dapat disimpulkan bahwa kata kunci $this digunakan untuk merujuk pada objek yang tidak diketahui dan digunakan untuk memudahkan kita dalam menulis kode.

Keyword self

Jika Anda melihat contoh pada pembahasan sebelumnya, Anda akan menemukan dua kata kunci yang tidak pernah saya sebutkan penggunaannya. Pada pembahasan kali ini kita akan membahas lebih mendalam penggunaan kedua kata kunci tersebut beserta kata kunci lainnya yang berkaitan dengan visibilitas.

Visibilitas

Dalam bahasa OOP, termasuk PHP, umumnya ada empat cakupan visibilitas, yaitu private, protected, public, dan default (visibilitas tidak ditentukan). Dilindungi adalah visibilitas yang dapat diakses dari ruang lingkup kelas tempat properti dan metode didefinisikan, serta instance kelas tersebut. Publik adalah semua visibilitas yang dilindungi ditambah properti dan metode yang memiliki visibilitas publik yang dapat diakses dari objek atau di luar kelas.

Dalam bahasa PHP, visibilitas defaultnya adalah publik, jadi jika suatu properti atau metode tidak memiliki visibilitas, visibilitasnya adalah publik.

Return Value

Dalam asumsi di atas, buah itulah yang disebut dengan nilai balik, sedangkan proses dari menanam benih dan merawatnya hingga tanaman berbuah disebut dengan metode tubuh atau proses yang terjadi di dalam metode tersebut. Jadi sekarang jika saya ingin mengirim surat ke perusahaan teman saya, saya cukup menulis alamat PO BOX 14000 dan surat itu akan masuk ke perusahaan teman saya.

Namespace

Tanpa blok-blok tersebut, bayangkan seseorang mengirim surat ke alamat seperti Perresidenan Permai Indah no. 1, suratnya mungkin tidak sampai ke orang sebagaimana mestinya karena banyak rumah yang menggunakan nomor rumah 1. Untuk lebih jelas mengenai fungsi namespace, berikut adalah tiga kelas dengan nama yang sama tetapi dalam namespace yang berbeda.

Tanpa menggunakan namespace, jika kita mendefinisikan nama kelas yang sama maka akan terjadi error karena dianggap mendeklarasikan ulang kelas atau mendefinisikan ulang kelas dengan nama yang sama.

Use

As

Atau dengan kata lain ketika kita menggunakan kata kunci yang kita gunakan secara tidak langsung kita juga sedang menggunakan kata kunci. Jadi jika kita ingin program diatas bebas error maka yang perlu kita lakukan adalah memberikan alias untuk kelas dengan nama yang sama. Sebenarnya pada contoh di atas kita hanya bisa memberikan alias pada tiga kelas saja, itu saja sudah cukup, namun untuk menghindari kebingungan, akan lebih baik jika kita memberikan alias pada semua kelas agar kita tahu dari kelas mana yang akan datang.

Namun ketika kita bekerja dan bergabung dalam suatu tim, suka atau tidak, suka atau tidak, kita harus mematuhi aturan penulisan kode yang diterapkan oleh tim tersebut.

Aturan Penulisan namespace dan class

Contoh penerapan aturan namespace dan class

Aturan penulisan method, property dan constanta

Peletakan kurung kurawal { dan } pada class dan

Namun, dalam komunitas PHP, penempatan awal di kelas dan metode yang tercakup dalam deklarasi adalah hal yang lumrah.

Penutup

Constructor

Dari keluaran ini kita dapat melihat bahwa nilai 4 yang kita masukkan ke dalam konstruktor di Bmw(4) baru diekspor dan nilai tersebut dimasukkan ke dalam properti $number Wheels. Hal ini terjadi karena pada PHP, jika kita tidak mendefinisikan konstruktor, maka secara otomatis PHP akan membuat konstruktor tanpa baris kode di dalamnya.

Destructor

Enkapsulasi

Pada contoh di atas, yang dimaksud dengan enkapsulasi adalah memberikan visibilitas privat pada $number of wheel sehingga properti ini hanya dapat diakses oleh kelas itu sendiri dan tidak dapat diakses dari luar. Dengan cara ini, jika kita ingin memanipulasi nilai $sumRoda, kita hanya dapat melakukannya melalui konstruktor dan tidak diperbolehkan mengaksesnya secara langsung. Jadi jika kita mencoba mengakses $number of wheel secara langsung seperti ini, tidak dapat dilakukan.

Kita juga dapat membuat metode set sehingga pemanggil dapat mempunyai cara alternatif untuk memasukkan nilai ke dalam properti.

Pewarisan

Keyword parent

Saat kita melakukan extend suatu kelas, terkadang kita juga perlu membuat metode tambahan di kelas anak atau sebaliknya kita hanya perlu mengganti (mendefinisikan ulang) metode yang sudah ada di kelas induk. Pada redefinisi ini tentunya kita juga akan menambahkan logika baru atau bahkan mengubah logika metode yang kita definisikan ulang.

Overriding dan Overloading

Merubah Visibilitas Method dengan Overriding

Kesimpulan

Abstract Class

Oke, mari kita buat file pemanggil untuk memastikan konsep yang kita pelajari berfungsi dengan baik. Nah, hasilnya sesuai dengan harapan kami, artinya konsep yang kami pelajari berjalan sebagaimana mestinya.

Abstract Method

Dari pesan error di atas terlihat jelas bahwa kita mempunyai metode abstrak yang belum diimplementasikan sehingga perlu diimplementasikan. Kalau begitu mari kita coba jalankan kembali program kita, pesan error sebelumnya seharusnya tidak muncul lagi. Interface disini tidak sama dengan user interface seperti istilah yang biasa Anda gunakan. Antarmuka di sini merupakan konsep dalam bahasa pemrograman berorientasi objek dan tidak ada kaitannya sama sekali dengan antarmuka pengguna.

Interface

Jika kita perhatikan, error di atas adalah error yang sama yang kita dapatkan ketika kita tidak mengimplementasikan metode abstrak pada kelas abstrak dan pembahasan metode abstrak.

Trait

Anda tidak perlu bingung dengan baris kode di atas karena tidak ada hubungannya dengan pembahasan kali ini. Maksud dari aturan OOP adalah metode atau properti yang ditandai statis, ketika kita memanggilnya, kita tidak perlu membuat instance terlebih dahulu.

Static method dan static property

Instansiasi internal class

Kesimpulan

Default Parameter

Sederhananya, parameter default adalah nilai awal yang akan diberikan kepada suatu parameter jika pemanggil tidak memberikan nilai saat memanggil suatu metode. Parameter default mencegah kesalahan yang disebabkan oleh lupa memasukkan parameter ketika suatu metode dipanggil. Artinya ketika kita memanggil setNumber of Wheels() tanpa parameter apa pun seperti pada kode $car->setNumber of Wheels(); Kemudian parameter secara otomatis mengambil nilai 4.

Parameter Casting

Pada kode di atas, kita memasukkan ke dalam metode setSisi hanya tipe data array yang dapat dimasukkan ke dalam metode tersebut. Pada contoh di atas, saya mencoba menerapkan semua yang kita pelajari sebelumnya, mulai dari kelas, kelas abstrak hingga antarmuka. Pada baris tersebut kita cast sehingga pada metode add() parameter yang dapat dimasukkan hanyalah tipe BuildSpace\BuildSpaceInterface.

Karena kelas Triangle adalah anak dari kelas AbstrakBangun-Ruang, dimana kelas tersebut mengimplementasikan antarmuka BangunRuang-Interface, kelas Triangle dapat secara otomatis diteruskan ke metode add(). Persegi, tetapi kelas ini tidak mengimplementasikan BangunRuangInterface, sehingga tidak dapat disertakan dalam metode add(). Dalam PHP, konsep ini diadaptasi dan diimplementasikan lebih dalam, sehingga tidak hanya fungsi anonim yang ada di PHP, tetapi juga kelas anonim.

Anonymous Function

Pada contoh di atas, kita membuat fungsi anonim yang ditetapkan ke variabel $add sehingga variabel $add dapat dipanggil.

Anonymous Class

Karena baru diperkenalkan pada PHP versi 7.0, pastikan versi PHP yang diinstal di komputer Anda lebih baru atau minimal versi 7.0 untuk mencoba fitur ini. Seringkali seorang programmer tidak menyadari kesalahan-kesalahan yang mungkin terjadi pada aplikasi yang dibangunnya. Error yang tidak ditangani dengan baik bahkan dapat membuka celah bagi seorang hacker atau cracker untuk memasuki aplikasi kita tanpa izin.

Kesalahan aplikasi dapat disebabkan oleh banyak hal, mulai dari kesalahan sintaksis tertulis hingga penanganan operasi aritmatika yang salah.

Manangani Exception dengan Try Catch

Pada kode di atas, pada blok catch, kita mengganti tipe eksepsi dengan MyException (kelas anak), sedangkan tipe eksepsi yang dilempar adalah tipe Exception (kelas induk), sehingga eksepsi di atas tidak dapat ditangani. Blok akhirnya adalah blok coba-tangkap yang akan selalu dieksekusi terlepas dari apakah terjadi pengecualian atau tidak. Dengan block catch, kita bisa melakukan apa saja termasuk memperbaiki alur program agar tidak terjadi error atau deadlock.

Tugas utama composer adalah menginstall perpustakaan, mengganti perpustakaan lama dengan yang baru sesuai versi yang kita perlukan (update perpustakaan) dan membuat autoloader untuk setiap perpustakaan, termasuk kode sumber kita.

System Requirement

Install Composer

Membuat file composer.json

Jika kita masuk lebih dalam ke folder pemasok, kita akan melihat bahwa ketergantungan proyek kita (monolog) sudah terpasang. Pada folder supplier selain dependensi proyek juga terdapat folder composer dan fileautoload.php. Fileautoload.php inilah yang akan kita gunakan untuk memuat otomatis ketergantungan proyek kita.

Autoloader

Susunan folder yang sebelum ini tidak mempunyai vendor folder kini ditambah walaupun kami tidak menentukan sebarang kebergantungan sama sekali.

Apa itu Design Pattern

Macam-macam Design Pattern

Tujuan utama dari pola tunggal adalah untuk membatasi instantiasi sehingga hanya ada satu objek dalam satu siklus eksekusi.

Implementasi

Implementasi

Seperti namanya, pola pengamat berfungsi untuk mengamati suatu peristiwa, peristiwa yang dimaksud merupakan titik penerapan yang menarik. Pola Observer biasanya digunakan agar suatu aplikasi dapat dikembangkan oleh pengembang lain tanpa harus melakukan perubahan apa pun pada kode sumbernya. Keuntungan dari pola pabrik adalah ketika Anda perlu mengganti nama atau mengganti kelas dalam pola pabrik, Anda hanya perlu menggantinya di satu tempat.

Anda tidak perlu menggunakan fungsi pencarian dan penggantian di IDE atau Editor untuk mengetahui di mana kelas dipanggil. Facade Pattern merupakan pola yang bertujuan untuk menyembunyikan kompleksitas suatu proses. Pola ini sangat terkenal di kalangan pengguna framework Laravel dan digunakan pada inti Laravel itu sendiri. Keuntungan menggunakan pola ini adalah pemanggil atau pengguna tidak perlu mengetahui kompleksitas subsistem atau proses yang terjadi pada metode internal.

Pada kode di atas, jika sewaktu-waktu ada perubahan ketentuan diskon atau lainnya, Anda tidak perlu mengubah kode penelepon tersebut. Ketika kode di atas dijalankan, tidak akan membuahkan hasil apa pun, tetapi saya ingin memberi tahu Anda bahwa konsep pola fasad ini akan membuat pekerjaan kita lebih mudah. Setelah mempelajari tentang OOP dan pola desain, sekarang saatnya mencoba mengimplementasikan semua yang telah kita pelajari ke dalam aplikasi nyata.

Sebagai tugas akhir kita akan membuat framework sederhana berbasis OOP dan menggunakan composer seperti yang kita pelajari sebelumnya.

Http Request dan Http Response

Framework Dependencies

Http Kernel: Komponen ini adalah komponen utama kami yang merupakan teras rangka kerja yang kami cipta.

Membuat Kernel Framework

Kami melakukan ini agar kelas Kernel bisa lebih fokus mengurus permintaan dan respons saja. Seperti yang dijelaskan sebelumnya, ini akan membuat kita lebih fokus karena kelas Kernel hanya menangani permintaan dan respons, sedangkan kelas Aplikasi menangani konfigurasi kerangka kerja kita.

Routing

Front Controller

Pada langkah selanjutnya, kita akan menerapkan pola pengamat pada frame kita sehingga frame yang kita buat akan lebih fleksibel. Tahap terakhir dari framework kita adalah menambahkan hook agar framework yang kita buat lebih mudah untuk diperluas. Saya tidak menyarankan penggunaan kerangka kerja yang kami buat untuk proyek nyata Anda tanpa meningkatkan dan menambahkan validasi kerangka kerja.

Referensi

Dokumen terkait

"Walking up a hill like Gasing Hill from Section 5 in Petalingjaya with lots of trees, or spending hours in a green environment like the Forest Research Institute of Malaysia FRIM in