Cara Menggunakan Kembali Kode PHP Secara Efektif - Pengantar Ciri PHP

Cara Menggunakan Kembali Kode PHP Secara Efektif - Pengantar Ciri PHP

Awalnya dikembangkan oleh Rasmus Lerdorf Pada tahun 1994, PHP adalah salah satu bahasa pemrograman tujuan umum yang paling banyak digunakan. Awalnya dilahirkan sebagai bahasa templat, selama bertahun-tahun ia berevolusi menjadi bahasa yang lengkap dengan yang tepat Oop Dukungan (Pemrograman Berorientasi Objek). Inkarnasi terbarunya, 7.X, memperkenalkan fitur baru seperti Deklarasi Jenis Pengembalian untuk fungsi dan peningkatan kinerja yang sangat besar. Php adalah a warisan tunggal Bahasa: Ini berarti bahwa kelas hanya dapat mewarisi untuk satu orang tua atau kelas dasar. Untuk mengatasi masalah ini fitur diperkenalkan dalam bahasa: sifat-sifat. Dalam artikel ini kita akan melihat cara menggunakannya dan cara kerjanya.

Dalam tutorial ini Anda akan belajar:

  • Cara menggunakan sifat di php


Persyaratan dan konvensi perangkat lunak yang digunakan

Persyaratan Perangkat Lunak dan Konvensi Baris Perintah Linux
Kategori Persyaratan, konvensi atau versi perangkat lunak yang digunakan
Sistem OS-independen
Perangkat lunak Php
Lainnya Pengetahuan tentang PHP dan konsep pemrograman berorientasi objek dasar
Konvensi # - mensyaratkan perintah linux yang diberikan untuk dieksekusi dengan hak istimewa root baik secara langsung sebagai pengguna root atau dengan menggunakan sudo memerintah
$ - mensyaratkan perintah Linux yang diberikan untuk dieksekusi sebagai pengguna biasa

Memperkenalkan sifat

PHP adalah bahasa waris tunggal: kelas anak hanya dapat mewarisi dari satu orang tua tunggal . Ini bisa menimbulkan masalah dalam hal penggunaan kembali kode, jika kelas perlu mewarisi banyak perilaku: sifat-sifat adalah cara untuk menyelesaikan masalah ini. Mari kita lihat caranya. Cara kita membuat sifat sangat mirip dengan cara kita membuat kelas, tetapi salah satu perbedaan besar antara sifat dan kelas adalah bahwa suatu sifat tidak bisa dipakai, tetapi hanya dapat digunakan di dalam kelas atau di dalam sifat lain. Membuat sifat itu mudah:

Menyalin

Kode yang terkandung di dalam "TraitOne" sangat sepele: itu hanya mencatat pesan. Mari kita lihat bagaimana kita bisa menggunakannya di dalam kelas:

tes kelas gunakan traitone; 
Menyalin

Kuncinya di sini adalah menggunakan kata kunci, itu, saat digunakan di dalam kelas, mari kita "mengimpor" fungsionalitas yang dikelompokkan dalam sifat. Sulit membayangkan sebuah kasus di mana kelas yang kami buat di atas dapat bermanfaat, karena tidak memiliki metode atau sifatnya sendiri. Karena kelas memanfaatkan sifat "TraitOne", bagaimanapun, kita dapat mengakses metode "log":

$ test = tes baru (); $ test-> log (); "Saya adalah metode traitone!" 
Menyalin

Itu cukup mudah, tetapi apa yang terjadi ketika suatu kelas sudah memiliki metode dengan nama yang sama termasuk dalam sifat yang digunakannya ? Mari kita verifikasi. Kami menambahkan metode "log" di dalam kelas uji:

tes kelas gunakan traitone; log fungsi publik () echo "Saya adalah metode kelas uji!";
Menyalin

Jika kita sekarang memanggil metode "log", kita mendapatkan hasil yang berbeda:

$ test = tes baru (); $ test-> log (); "Saya adalah metode kelas tes!"
Menyalin

Bagaimana jika kelas uji tidak memiliki metode "log", tetapi mewarisi dari kelas dasar yang diperpanjang? Mari kita lihat:

kelas basis log fungsi publik () echo "Saya adalah metode kelas dasar!"; tes kelas memperluas basis gunakan traitOne; $ test = test baru (); $ test-> log ();" Saya adalah metode traitOne!"
Menyalin

Seperti yang Anda lihat, kami mendapat “Saya adalah metode Traitone!“Sebagai hasil dari memohon metode log. Ini berarti bahwa Basis Metode kelas telah ditimpa oleh orang di dalam sifat. Hirarki yang perlu diingat di sini sederhana. Di dalam kelas:

  1. Ciri -ciri mengesampingkan metode yang diwariskan;
  2. Metode kelas saat ini mengesampingkan metode sifat;

Menggunakan beberapa sifat

Di dalam kelas kita dapat menggunakan beberapa sifat: yang harus kita lakukan, adalah memasukkannya setelah menggunakan Kata kunci, dipisahkan oleh koma:

tes kelas gunakan traitOne, traittwo; 
Menyalin

Penggunaan beberapa sifat, namun mungkin dapat membuat konflik nama. A kesalahan fatal dikembalikan jika sifat memiliki metode dengan nama yang sama:

Trait Traitone Public Function Log () echo "Saya adalah metode TraitOne!"; sifat traittwo log fungsi publik () echo" Saya adalah metode traittwo!"; tes kelas gunakan traitone, traittwo; php kesalahan fatal: log metode sifat belum diterapkan, karena ada tabrakan dengan metode sifat lain 1
Menyalin

Apa yang bisa kita lakukan untuk menyelesaikan jenis konflik seperti itu? Kita bisa menggunakan alih-alih operator, tidak termasuk metode yang tidak ingin kami gunakan:

tes kelas gunakan traitOne, traittwo traitOne :: log sebagai gantinya traittwo; 
Menyalin

Sintaksnya sangat sederhana: kami menentukan bahwa kami ingin menggunakan metode "log" dari sifat traitone, menyelesaikan konflik. Bagaimana jika kita ingin melakukan seperti di atas, tetapi kita masih ingin menjaga fungsionalitas yang disediakan oleh metode "log" dari traittwo? Kita harus membuat alias untuk itu. Kita bisa melakukannya dengan menggunakan sebagai operator. Dalam contoh berikut kami alias metode "log" sebagai "traittwo_log":

tes kelas gunakan traitOne, traittwo traitOne :: log sebagai gantinya traittwo; traittwo :: log as traititwo_log; 
Menyalin

Dengan cara ini kita masih dapat mengakses metode "log" traittwo, memohonnya sebagai traittwo_log ():

$ test = tes baru (); $ test-> log (); Saya adalah metode traitone! $ test-> traittwo_log (); Saya adalah metode traittwo!
Menyalin

Menggunakan operator AS untuk mengubah visibilitas metode sifat

Di dalam kelas, sebagai Operator juga dapat digunakan untuk mengubah visibilitas metode yang diimpor sebagai bagian dari suatu sifat. Dalam contoh sebelumnya, semua metode sifatnya publik. Kita dapat mengubah ini di dalam kelas:

tes kelas gunakan traitone log as dilindungi; 
Menyalin

Dengan sintaks di atas kami menentukan bahwa metode log dari "TraitOne" harus digunakan sebagai terlindung bahkan jika awalnya dinyatakan dengan a publik visibilitas. Memang, jika kita mencoba memohon metode log, kita menerima kesalahan:

$ test = tes baru (); $ test-> log (); PERINGATAN PHP: Kesalahan Tak Terbang: Panggilan ke Metode Protected Test :: Log () Dari Konteks "dalam Kode Shell PHP: 1 
Menyalin

Jika kami memberikan nama untuk alias, perubahan visibilitas akan diterapkan pada metode alias, sedangkan yang asli akan mempertahankan visibilitasnya:

tes kelas gunakan traitone log sebagai aliased_log yang dilindungi;  $ test = test baru (); $ test-> log (); Saya adalah metode traitone! $ test-> aliased_log (); PERINGATAN PHP: Kesalahan Tak Terbang: Panggilan ke Tes Metode Protected :: Aliased_log () dari konteks "dalam kode shell php: 1
Menyalin

Metode abstrak dan statis di dalam sifat

Di dalam sifat kita dapat mendefinisikan keduanya abstrak Dan statis metode. Dalam kasus pertama, sifat akan membutuhkan kelas yang menggunakannya untuk memberikan implementasi konkret dari metode ini. Kesalahan fatal akan dihasilkan jika kelas tidak mengimplementasikan metode ini atau tidak dinyatakan sebagai abstrak:

Menyalin

Metode sifat juga dapat dinyatakan dan digunakan sebagai statis:

Menyalin

Sifat sifat

Tidak hanya metode tetapi juga properti dapat didefinisikan di dalam sifat, satu -satunya aturan untuk dihormati adalah bahwa jika suatu properti didefinisikan di dalam sifat, kelas yang memanfaatkannya tidak dapat menentukan properti dengan nama yang sama, kecuali jika ia memiliki visibilitas yang sama dan nilai awal. Inilah contohnya:

Menyalin

Itu $ name Properti didefinisikan dalam "Traitone" dan juga di kelas "Tes". Keduanya memiliki visibilitas yang sama (dilindungi), tetapi nilai awal mereka berbeda, oleh karena itu mereka dianggap tidak kompatibel, dan ini menghasilkan kesalahan fatal.

Menutup pikiran

Dalam artikel ini kami belajar untuk mengetahui sifat-sifat, fitur yang meningkatkan penggunaan kembali kode di PHP. Kami melihat bagaimana sifat tidak dapat dipakai tetapi hanya digunakan di dalam kelas, melalui menggunakan kata kunci. Kami melihat apa urutan prioritas yang digunakan ketika suatu sifat dan kelas yang digunakan dalam metode implementasi dengan nama yang sama, bagaimana menyelesaikan konflik tersebut dengan menggunakan alih-alih operator, dan cara membuat alias untuk metode sifat dan bagaimana mungkin untuk mengubah visibilitas mereka dengan sebagai operator.

Akhirnya kami melihat bagaimana mungkin juga untuk mendefinisikan sifat dan metode statis atau abstrak di dalam suatu sifat. Ingin tahu lebih banyak tentang PHP? Kami memiliki banyak artikel tentang masalah ini!

Tutorial Linux Terkait:

  • Hal -hal yang harus diinstal pada ubuntu 20.04
  • Cara Membangun Aplikasi Tkinter Menggunakan Objek Berorientasi…
  • Hal -hal yang harus dilakukan setelah menginstal ubuntu 20.04 FOSSA FOSSA Linux
  • Bagaimana bekerja dengan WooCommerce Rest API dengan Python
  • Cara membandingkan kinerja disk di linux
  • Cara membuat tumpukan lampu berbasis Docker menggunakan Docker di…
  • Mint 20: Lebih baik dari Ubuntu dan Microsoft Windows?
  • Hal -hal yang harus diinstal pada Ubuntu 22.04
  • Cara menulis ekstensi nautilus dengan nautilus-python
  • Cara menyebarkan sinyal untuk proses anak dari pesta ..