Cara Menggunakan semula Kod PHP dengan berkesan - Pengenalan kepada Ciri PHP

Cara Menggunakan semula Kod PHP dengan berkesan - Pengenalan kepada Ciri PHP

Asalnya dibangunkan oleh Rasmus Lerdorf Pada tahun 1994, PHP adalah salah satu bahasa pengaturcaraan yang paling banyak digunakan. Asalnya dilahirkan sebagai bahasa templat, selama bertahun-tahun ia berkembang menjadi bahasa yang lengkap dengan yang sesuai OOP (Pengaturcaraan Berorientasikan Objek) Sokongan. Inkarnasi terkini, 7.x, memperkenalkan ciri baru seperti Pengisytiharan jenis kembali untuk fungsi dan peningkatan prestasi yang besar. PHP adalah warisan tunggal Bahasa: Ini bermaksud bahawa kelas boleh mewarisi hanya untuk satu ibu bapa atau kelas asas. Untuk mengatasi masalah ini, ciri diperkenalkan dalam bahasa: sifat. Dalam artikel ini kita akan melihat cara menggunakannya dan bagaimana ia berfungsi.

Dalam tutorial ini anda akan belajar:

  • Cara menggunakan ciri -ciri dalam php


Keperluan perisian dan konvensyen yang digunakan

Keperluan Perisian dan Konvensyen Talian Perintah Linux
Kategori Keperluan, konvensyen atau versi perisian yang digunakan
Sistem OS-bebas
Perisian Php
Yang lain Pengetahuan mengenai konsep pengaturcaraan berorientasikan objek PHP dan asas
Konvensyen # - Memerlukan arahan Linux yang diberikan untuk dilaksanakan dengan keistimewaan akar sama ada secara langsung sebagai pengguna root atau dengan menggunakan sudo perintah
$ - Memerlukan arahan Linux yang diberikan sebagai pengguna yang tidak layak

Memperkenalkan ciri -ciri

PHP adalah bahasa warisan tunggal: kelas kanak -kanak hanya boleh mewarisi dari satu ibu bapa tunggal . Ini boleh menimbulkan masalah dari segi penggunaan semula kod, jika kelas perlu mewarisi pelbagai tingkah laku: sifat adalah cara untuk menyelesaikan masalah ini. Mari kita lihat bagaimana. Cara kita mencipta sifat sangat mirip dengan cara kita membuat kelas, tetapi salah satu perbezaan besar antara ciri -ciri dan kelas adalah sifatnya tidak dapat ditandakan, tetapi hanya boleh digunakan di dalam kelas atau di dalam sifat lain. Membuat sifatnya mudah:

Salinan

Kod yang terkandung di dalam "traitone" sangat remeh: ia hanya log mesej. Mari lihat bagaimana kita boleh menggunakannya di dalam kelas:

Ujian kelas menggunakan traitone; 
Salinan

Kunci di sini adalah gunakan Kata kunci, bahawa, apabila digunakan di dalam kelas, marilah kita "mengimport" fungsi yang dikelompokkan dalam sifat. Sukar untuk membayangkan kes di mana kelas yang kami buat di atas boleh berguna, kerana ia tidak mempunyai kaedah atau sifatnya sendiri. Oleh kerana kelas menggunakan sifat "traitone", kita boleh, bagaimanapun, akses kepada kaedah "log":

$ test = ujian baru (); $ test-> log (); "Saya kaedah traitone!" 
Salinan

Itu cukup mudah, tetapi apa yang berlaku apabila kelas mempunyai kaedah dengan nama yang sama termasuk dalam sifat yang digunakannya ? Mari sahkan. Kami menambah kaedah "log" di dalam kelas ujian:

Ujian kelas menggunakan traitone; log fungsi awam () echo "Saya adalah kaedah kelas ujian!";
Salinan

Sekiranya kita sekarang memanggil kaedah "log", kita memperoleh hasil yang berbeza:

$ test = ujian baru (); $ test-> log (); "Saya kaedah kelas ujian!"
Salinan

Bagaimana jika kelas ujian tidak mempunyai kaedah "log", tetapi mewarisi dari kelas asas ia dilanjutkan? Mari kita lihat:

asas kelas log awam log () echo "Saya adalah kaedah kelas asas!"; ujian kelas memanjangkan asas menggunakan traitone; $ test = ujian baru (); $ test-> log ();" Saya adalah kaedah traitone!"
Salinan

Seperti yang anda lihat, kami mendapat "Saya adalah kaedah traitone!"Hasil daripada menggunakan kaedah log. Ini bermaksud bahawa Asas Kaedah kelas telah ditindih oleh yang ada di dalam sifat. Hierarki yang perlu diingat di sini adalah mudah. Di dalam kelas:

  1. Ciri -ciri mengatasi kaedah yang diwarisi;
  2. Kaedah kelas semasa mengatasi kaedah sifat;

Menggunakan pelbagai ciri

Di dalam kelas kita boleh menggunakan pelbagai ciri: yang perlu kita lakukan, adalah memasukkannya selepas gunakan Kata kunci, dipisahkan oleh koma:

ujian kelas menggunakan traitone, traittwo; 
Salinan

Penggunaan pelbagai ciri, namun mungkin dapat menghasilkan konflik nama. A Kesalahan maut dikembalikan jika ciri -ciri mempunyai kaedah dengan nama yang sama:

Trait Traitone Public Function Log () echo "Saya adalah kaedah traitone!"; Trait traittwo public function log () echo" Saya adalah kaedah traittwo!"; ujian kelas menggunakan traitone, traittwo; php ralat maut: log kaedah trait belum digunakan, kerana terdapat perlanggaran dengan kaedah sifat lain 1
Salinan

Apa yang boleh kita lakukan untuk menyelesaikan jenis konflik seperti itu? Kita boleh menggunakan sebaliknya pengendali, tidak termasuk kaedah yang kita tidak mahu gunakan:

Ujian kelas menggunakan traitone, traittwo traitone :: log bukannya traittwo; 
Salinan

Sintaks sangat mudah: kami menyatakan bahawa kami mahu menggunakan kaedah "log" dari sifat traitone, menyelesaikan konflik. Bagaimana jika kita mahu lakukan seperti di atas, tetapi kita masih mahu mengekalkan fungsi yang disediakan oleh kaedah "log" dari traittwo? Kita mesti membuat alias untuk ia. Kita boleh melakukannya dengan penggunaan sebagai pengendali. Dalam contoh berikut, kita alias kaedah "log" sebagai "traittwo_log":

Ujian kelas menggunakan traitone, traittwo traitone :: log bukannya traittwo; traittwo :: log sebagai traittwo_log; 
Salinan

Dengan cara ini kita masih boleh mengakses kaedah "log" traittwo, memohon sebagai traittwo_log ():

$ test = ujian baru (); $ test-> log (); Saya adalah kaedah traitone! $ test-> traittwo_log (); Saya kaedah traittwo!
Salinan

Menggunakan operator AS untuk mengubah keterlihatan kaedah sifat

Di dalam kelas, sebagai Pengendali juga boleh digunakan untuk mengubah keterlihatan kaedah yang diimport sebagai sebahagian daripada sifat. Dalam contoh sebelumnya, semua kaedah ciri -ciri adalah awam. Kita boleh mengubahnya di dalam kelas:

Ujian kelas menggunakan traitone log sebagai dilindungi; 
Salinan

Dengan sintaks di atas kami menyatakan bahawa kaedah log dari "traitone" harus digunakan sebagai dilindungi walaupun pada asalnya diisytiharkan dengan awam penglihatan. Sesungguhnya, jika kita cuba memohon kaedah log kita menerima ralat:

$ test = ujian baru (); $ test-> log (); Amaran PHP: Kesalahan Uncought: Panggilan ke Ujian Kaedah yang Dilindungi :: Log () Dari Konteks "Dalam Kod Shell PHP: 1 
Salinan

Jika kami memberikan nama untuk alias, perubahan penglihatan akan digunakan untuk kaedah alias, sementara yang asal akan mengekalkan penglihatannya:

Ujian kelas gunakan traitone log sebagai aliased_log yang dilindungi;  $ test = ujian baru (); $ test-> log (); Saya adalah kaedah traitone! $ test-> aliased_log (); Amaran PHP: Kesalahan Uncaught: Panggilan ke Ujian Kaedah yang Dilindungi :: aliased_log () dari konteks "dalam kod shell php: 1
Salinan

Kaedah abstrak dan statik di dalam sifat

Di dalam sifat kita dapat menentukan kedua -duanya Abstrak dan statik kaedah. Dalam kes pertama, sifat itu memerlukan kelas yang menggunakannya untuk menyediakan pelaksanaan konkrit kaedah. Kesalahan maut akan dijana jika kelas tidak melaksanakan kaedah atau tidak diisytiharkan sebagai abstrak:

Salinan

Kaedah sifat juga boleh diisytiharkan dan digunakan sebagai statik:

Salinan

Sifat sifat

Bukan sahaja kaedah tetapi juga sifat boleh ditakrifkan di dalam sifat, satu -satunya peraturan untuk dihormati ialah jika harta ditakrifkan di dalam sifat, kelas yang menggunakannya tidak dapat menentukan harta dengan nama yang sama, kecuali jika ia mempunyai Keterlihatan yang sama dan nilai awal. Berikut adalah contoh:

Salinan

The $ nama Harta ditakrifkan dalam "traitone" dan juga dalam kelas "ujian". Kedua -duanya mempunyai penglihatan yang sama (dilindungi), tetapi nilai awalnya berbeza, oleh itu mereka dianggap tidak serasi, dan hasil ini menjadi ralat maut.

Pemikiran penutupan

Dalam artikel ini kita belajar tahu sifat, ciri yang meningkatkan penggunaan semula kod dalam php. Kami melihat bagaimana ciri -ciri tidak dapat diterapkan tetapi hanya digunakan di dalam kelas, melalui gunakan kata kunci. Kami melihat apakah urutan keutamaan yang digunakan apabila sifat dan kelas ia digunakan dalam melaksanakan kaedah dengan nama yang sama, bagaimana menyelesaikan konflik tersebut dengan menggunakan sebaliknya pengendali, dan bagaimana membuat alias untuk kaedah sifat dan bagaimana mungkin untuk mengubah keterlihatan mereka dengan sebagai pengendali.

Akhirnya kita melihat bagaimana ia juga mungkin untuk menentukan sifat dan kaedah statik atau abstrak di dalam sifat. Ingin mengetahui lebih lanjut mengenai php? Kami mempunyai banyak artikel mengenai perkara ini!

Tutorial Linux Berkaitan:

  • Perkara yang hendak dipasang di Ubuntu 20.04
  • Cara Membina Aplikasi TKInter Menggunakan Objek Berorientasikan ..
  • Perkara yang perlu dilakukan setelah memasang ubuntu 20.04 Focal Fossa Linux
  • Cara Bekerja Dengan API Rest WooCommerce dengan Python
  • Cara Prestasi Cakera Penanda Aras di Linux
  • Cara membuat timbunan lampu berasaskan Docker menggunakan Docker pada ..
  • Mint 20: Lebih baik daripada Ubuntu dan Microsoft Windows?
  • Perkara yang perlu dipasang di Ubuntu 22.04
  • Cara Menulis Sambungan Nautilus dengan Nautilus-Python
  • Cara menyebarkan isyarat kepada proses kanak -kanak dari bash ..