Cara Menggunakan semula Kod PHP dengan berkesan - Pengenalan kepada Ciri PHP
- 2530
- 289
- Jerome Quitzon
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
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:
- Ciri -ciri mengatasi kaedah yang diwarisi;
- 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 ..
- « Cara Membuat, Membungkus dan Menandatangani Pelanjutan Web Firefox
- Cara Mengaktifkan Autologin di Kali Linux »