Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. WordPress
Code

Object-Oriented Programming di WordPress: Inheritance II

by
Length:LongLanguages:
This post is part of a series called Object-Oriented Programming in WordPress.
Object-Oriented Programming in WordPress: Inheritance I
Object-Oriented Programming in WordPress: A Summary

Indonesian (Bahasa Indonesia) translation by Arief Syahrir (you can also view the original English article)

Dalam artikel sebelumnya, kami memperkenalkan konsep inheritance berorientasi objek, mencoba untuk menempatkan itu istilah, dan kemudian juga mengambil melihat model konseptual high-level cara kerjanya dalam konteks pemrograman.

Tapi sebelum kita pergi lebih jauh dan/atau jika Anda hanya bergabung dalam seri ini, harap Tinjau semuanya kami telah kita bahas sejauh ini dengan membaca artikel sebelumnya:

  1. Sebuah Pengantar
  2. Classes
  3. Type
  4. Struktur kontrol: Pernyataan bersyarat
  5. Control Structures: loop
  6. Fungsi dan Atribut
  7. Scope
  8. Membangun Plugin I
  9. Membangun Plugin II
  10. Dokumen Plugin I
  11. Dokumen Plugin II
  12. Pewarisan I

Ya - kita telah membahas banyak, tapi untuk meletakkan dasar bagi pemula untuk memiliki tempat yang kuat untuk mulai menulis object-oriented PHP, ada banyak untuk diperiksa.

Dengan mengatakan bahwa, warisan adalah mana kita mulai masuk ke topik menengah paradigma, jadi ini akan menjadi akhir artikel yang menyediakan melihat konsep pemula setelah itu kita akan berakhir seri dengan ringkasan post.

Pewarisan ditinjau

Ingat bahwa kita mendifinisikan pewarisan sebagai berikut:

Pewarisan adalah ketika satu class berfungsi sebagai parent class untuk child class yang menyediakan sejumlah atribut dan metode umum untuk parent dan child; Namun, child sebagai kemampuan untuk memperkenalkan atribut itu sendiri.

Ini sedikit kurang formal daripada apa yang Anda mungkin menemukan di sebuah buku akademik, atau bahkan di Wikipedia, tapi itu masih menjelaskan ide dalam istilah yang menggambarkan hal ini.

Dalam artikel ini, kami akan meninjau semua kode yang diperlukan, fungsi, dan kata-kata terkait dengan topik, kita akan melihat bagaimana kita dapat menerapkannya dalam jalan PHP dalam simpel platform-agnostic, dan kemudian kami akan meninjau pelaksanaan sebenarnya bagainmana pewarisan bermain dalam WordPress.

Jadi dengan itu roadmap ditetapkan untuk artikel, mari kita pergi ke depan dan memulai.

Fasilitas PHP

Dalam rangka melaksanakan pewarisan di PHP berorientasi objek, ada sejumlah kata-kata dicadangkan yang kita perlu untuk membiasakan diri. Untungnya, sebagian dari kata-kata kita sudah dibahas, dan mereka yang kita belum cukup jelas sehingga mudah untuk mengingat mereka.

Jadi sebelum kita menyelam ke dalam melihat kode, mari kita lihat semua kata-kata dicadangkan dalam bahasa yang kita perlu tahu sehingga kita dapat mulai benar-benar menciptakan sesuatu.

  • extends reserved kata yang menunjukkan bahwa satu class child class lain. Sebagai contoh, dalam artikel kami sebelumnya, Post extends Content. Kita akan melihat ini dan bermain segera.
  • private adalah atribut yang diterapkan ke properti dan fungsi yang berarti mereka dapat diakses hanya dalam konteks class di mana mereka didefinisikan.
  • protected ini mirip private dengan pengecualian bahwa properti dan metode yang ditandai sebagai tersebut dapat diakses oleh setiap child class dan golongan tertentu.
  • public adalah kebalikan dari private yang artinya setiap class - class tertentu, sebuah subclass, atau pihak ketiga class - dapat mengakses properti atau metode untuk mengubah informasi atau fungsi.

Anda juga perlu untuk menjadi akrab dengan :: operator, tetapi kita akan menutupi itu sedikit kemudian dalam artikel ketika kita mulai melihat kode.

Dan hanya itu - tidak ada yang sangat menakutkan, itu? Dan apa yang lebih baik adalah bahwa jika Anda sudah mengikuti bersama kami seluruh seri ini, maka Anda mungkin akrab dengan setiap kata Simpan bagi extends.

Lagi pula, dengan mengatakan bahwa, mari kita mulai bekerja pada contoh.

Beberapa contoh kode

Untuk memulai menulis beberapa kode contoh, kita perlu meletakkan tahu persis apa itu bahwa kita akan mencoba untuk model (setelah semua, yaitu kode apa terjadi, bukan?).

Dalam menjaga konsisten dengan tema yang digunakan di seluruh seri ini - terutama di artikel terakhir - kita memiliki class induk yang disebut Content, dan dua child class masing-masing yang akan dinamakan Comment dan Post, masing-masing.

Ini akan memungkinkan kita untuk melihat bagaimana properti dan metode yang ada dalam sebuah single class, dan bagaimana children dapat mengakses atribut dari parent mereka, serta bagaimana parent dapat melindungi mereka sifat dan fungsi dari child mereka, juga.

Tetapi implementasi akan menunjukkan jauh lebih dari berbicara tentang hal itu, jadi mari kita mulai menulis beberapa kode.

Parent Class

Dalam contoh kita, parent class akan menjadi Content karena kedua sub -, Post dan Comment - jenis konten yang memiliki informasi unik yang terkait dengan mereka yang tidak khusus untuk class Content.

Kunci untuk pewarisan adalah untuk mengidentifikasi semua properti dan metode yang umum di semua class dan menjaga mereka didefinisikan dalam parent class, atau dalam class kami, dalam Content.

Meskipun hal ini dapat beragam, tergantung pada bagaimana Anda melihat ini, kita akan setup Content seperti yang mencakup:

  • tanggal di mana konten tanggal diterbitkan
  • penulis
  • sebuah metode untuk menyimpan konten
  • metode untuk format konten
  • metode untuk mengambil konten
  • dan metode untuk mengambil penulis konten

Pertama, kita akan melihat pada kode, lalu kami akan menjelaskan segalanya yang terjadi dengan itu.

Seperti dijelaskan sebelumnya, kita memiliki dua protected atribut dan atribut private. Ingat bahwa ini berarti bahwa semua subclass dapat mengakses $author dan $publish_date, tetapi hanya Content dapat mengakses atribut $content.

Juga perhatikan bahwa banyak kode yang Anda lihat di atas adalah class objet-oriented PHP. Tidak ada yang menonjol yang berhubungan langsung dengan pewarisan selain beberapa pengubah akses yang telah dinyatakan. Yang mengatakan bahwa itu relatif umum kode kami telah melihat sejauh ini dalam tutorial ini.

Salah satu hal yang perlu dicatat adalah bahwa fungsi private adalah tempat untuk menunjukkan dua hal:

  1. Bagaimana fungsi private hanya dapat diakses dalam konteks class di mana di didefinisikan.
  2. Strip setiap tag dan slashes dari isi sehingga markup yang tidak bisa disimpan dengan konten.

Tentu saja, kode ini tidak terhubung database atau sistem berkas atau apa pun, tetapi poinnya masih ada.

Perhatikan bahwa, dalam kode di atas ada beberapa hal yang kami sudah perlu menambahkan untuk memenuhi persyaratan PHP. Mereka berada di luar cakupan artikel ini, tapi berharga menunjukkan di sini:

  • Kode untuk date_default_time_set diperlukan untuk mengatur zona dari yang waktu dapat diambil.
  • Constructor bertanggung jawab untuk awalnya menetapkan tanggal mempublikasikan konten, dan itu menginisialisasi properti penulis untuk string kosong. Ini adalah Post dapat memiliki penulis sendiri dan Comment dapat memiliki penulis sendiri, juga. Seperti yang kita akan lihat nanti, Comment dapat bahkan menimpa default tanggal publikasi.

Perhatikan juga bahwa kami tidak mampu mengambil isi dari metode read dan kami mampu mendapatkan penulis dari fungsi get_author.

Child pertama

Selanjutnya, mari kita pergi ke depan dan membuat subclass Post. Pertama, kita akan melihat pada kode dan kemudian kita akan melihat bagaimana ia berinteraksi dengan Content class yang baru dibuat.

Class kelihatan kecil, kan? tidak ada properti - karena memang ia mengandung mereka dari class Content - dan ada fungsi hanya dua, salah satunya unik ke class - post.

Perhatikan bahwa dalam konstruktor, kita pertama kali membuat panggilan untuk constructor parent menggunakan :: operator. Anda dapat membaca lebih lanjut tentang ini dalam manual, tapi Cukuplah itu to mengatakan bahwa operator dicadangkan untuk referensi sejumlah perbedaan hal di luar class yang didefinisikan. Dalam kasus kami, itu adalah panggilan untuk constructor parent.

Selanjutnya, aku telah memilih untuk menetapkan nama saya sebagai penulis post. Perhatikan bahwa saya menggunakan kata kunci $this. Karena subclass mewarisi properti dari parent, hal itu dapat merujuk pada properti-properti dan jika mereka telah ditetapkan dalam dirinya sendiri.

Perhatikan bahwa ini mungkin tidak hanya karena Post extends Content tetapi karena properti ditandai sebagai protected dalam Content, juga. Jika itu ditandai sebagai private, ini tidak akan mungkin.

Child kedua

Sekarang kami telah membuat class Post, kita juga memiliki class Comment yang, ingat, mewakili seseorang meninggalkan komentar pada post. Itu kode production-level, akan ada jauh lebih kode: kita harus berhubungan komentar ke post, menentukan jika komentar merupakan Balasan untuk komentar yang ada, menandai status komentar, dan sebagainya.

Tapi untuk tujuan menunjukkan pewarisan, kami akan berangkat semua yang keluar dan berfokus hanya pada hal-hal yang dapat mendorong konsep-konsep.

Seperti yang Anda lihat, Comment kode tidak jauh berbeda dari kode Post. Untuk gelar - ini baik karena hal itu menunjukkan bahwa kami telah disarikan bagian yang tepat ke dalam class base kami.

Lagi pula, kita menyadari bahwa setelah kami membangun Comment, membuat panggilan ke constructor parent. Selanjutnya, kita mendefinisikan metode add yang bertanggung jawab untuk mengambil komentar masuk dan kemudian menyimpannya dengan memasukan penulis komentar dan itu adalah konten untuk save metode.

Hal yang baik adalah bahwa save metode sudah didefinisikan dalam class base yang juga menangani semua format melalui penggunaan fungsi private, sehingga kita memperoleh bahwa fungsi seperti yang kita membuat class child kami.

Bekerja dengan contoh

Dengan itu dilakukan, mari kita jalankan beberapa contoh untuk menunjukkan bagaimana potongan cocok bersama. Untuk memastikan kode ini dieksekusi, yang Anda butuhkan adalah web server, direktori yang untuk menjalankan skrip PHP, dan editor teks.

Pertama, kita akan membuat sebuah instance dari Content dan kemudian kami akan memanggil debug statement sehingga kita dapat melihat apa yang merupakan sebuah instance dari class.

Memungkinkan semua karya dengan benar, Anda harus melihat segala sesuatu yang ada di atas.

Selanjutnya, mari kita pergi ke depan dan membuat post. Karena kami menetapkan semua informasi di dalam class, kita benar-benar perlu lakukan adalah panggilan fungsi class untuk menampilkan informasi.

Sebagai contoh:

Sekali lagi, karena kami telah menyiapkan segala sesuatu dalam kode itu sendiri, hanya memanggil metode menunjukkan konsep.

Akhirnya, kita dapat membuat Comment, memanggil metode add instance kelas, berusaha untuk lulus dalam kode berbahaya (hanya untuk melihat dilucuti keluar oleh kode kita). Jika semuanya berjalan dengan baik, Anda harus melihat berikut:

Dan hanya itu: kami demonstrasi pewarisan sederhana.

Pewarisan di WordPress

Ketika datang untuk melihat pewarisan di WordPress, hal pertama yang terlintas dalam pikiran untuk diriku sendiri - dan mungkin pengembang lain - adalah API widget. Alasan saya mengatakan ini adalah karena APInya di dukung pewarisan.

Tentu, widget dapat dibuat tanpa menggunakan API, tapi saya akan berpendapat bahwa salah langkah dalam pengembangan. Mengapa membuat hal-hal yang lebih rumit untuk diri Anda sendiri ketika sudah ada sebuah pondasi di tempat untuk melakukannya? Tetapi saya ngelantur.

Yang menyenangkan tentang API khusus ini adalah bahwa ini menampilkan semua poin yang tinggi dari pemrograman berorientasi obyek dan pewarisan di tempat kerja. Sebagai contoh, berikut adalah sepotong kode sampel yang diambil langsung dari Codex:

Sekarang bahwa kita telah ditutupi model konseptual, menatap kata kunci dan metodologi, ditulis kode kita sendiri, dan menciptakan contoh kita sendiri, ini harus relatif mudah untuk diikuti.

Tapi ada satu hal: salah satu cara terbaik untuk mendapatkan lebih baik menulis jenis kode adalah untuk terus-menerus mempraktekan konsep. Untuk mengeksplorasi ide-ide yang ditulis oleh orang lain yang telah dilakukan lebih lanjut hal-hal yang Anda dalam pekerjaan sebelumnya.

Kasus di titik, Lihatlah contoh pertama yang tersedia di WordPress Codex. Dan jika Anda bekerja dengan versi PHP yang mendukung fitur seperti namespaces (sedikit lebih maju topik), kemudian check out contoh kedua, juga.

Semakin Anda meninjau kode dan menggoda terpisah, semakin Anda akan belajar tentang hal itu. Tetapi akan ada lebih jauh dari itu dalam artikel ini akan membawa kita keluar dari lingkup seluruh seri.

Sampai akhir

Pada titik ini, kita telah membahas semua materi pemula perlu meletakan fondasi beginner's panduan untuk menulis object-oriented PHP. Dalam artikel terakhir, kami akan menyediakan ringkasan dari segala sesuatu yang kita telah membahas sehingga kita memiliki satu referensi untuk ide-ide besar yang dapat bookmarked, disimpan, atau disebut kemudian.

Selain itu, kita akan memiliki diskusi singkat pada serangkaian tindak lanjut, tapi kami akan menyimpan itu sampai saat itu.

Untuk sekarang, jika Anda memiliki pertanyaan, komentar dan umpan balik pada konten, kode, atau contoh di atas, merasa bebas untuk melakukannya di bagian komentar di bawah ini.

Advertisement
Advertisement
Advertisement
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.