Saya bertanya-tanya apakah salah satu fitur utama dari bahasa pemrograman adalah memiliki kemampuan untuk membebani fungsi melalui argumen. Saya pikir ini penting dalam konteks pemrograman berorientasi objek.
Apakah sengaja ditinggalkan dan tidak diizinkan? Atau apakah kelebihan beban bukan praktik yang baik?
php
method-overloading
pengguna1179459
sumber
sumber
Jawaban:
Siapa bilang PHP tidak mendukung fungsi yang berlebihan? !!!
Sebenarnya PHP memang mendukung fungsi overloading, tetapi dengan cara yang berbeda. Fitur kelebihan PHP berbeda dari Java:
Periksa blok kode berikut.
Berfungsi untuk mencari jumlah n angka:
Berfungsi untuk menambahkan dua angka atau untuk menggabungkan dua string:
Pendekatan Berorientasi Objek termasuk Metode Overloading:
Ref: http://php.net/manual/en/language.oop5.overloading.php
Dalam PHP, overloading berarti Anda dapat menambahkan anggota objek pada saat run-time, dengan menerapkan beberapa metode sihir seperti
__set
,__get
,__call
dllsumber
findSum(10, "steve", { 86, "2012-09-20" });
. Overload sejati akan memungkinkan parameter baru dari berbagai jenis.Bukan dukungan penuh "Overloading Tradisional", hanya sebagian .
Catatan: bagian kedua dari definisi ini biasanya dikaitkan dengan yang diketik secara statis bahasa pemrograman yang yang melakukan pemeriksaan tipe dan / atau pemeriksaan arity , untuk memilih deklarasi yang benar. PHP bukan bahasa yang diketik secara statis, itu dinamis , dan menggunakan pengetikan yang lemah .
DUKUNGAN PHP :
YA, memberikan kemampuan untuk memanggil beberapa metode dengan nama yang sama tetapi jumlahnya berbeda . Lihat func_get_args dan @rajukoyilandy jawaban, kita dapat menggunakan
f(x)
danf(x,y)
.YA, menyediakan kemampuan untuk menelepon beberapa metode dengan nama yang sama tetapi jenis yang berbeda . Se menggunakan internal gettype dalam metode ini.
TIDAK menyediakan kemampuan untuk mendeklarasikan beberapa metode dengan nama yang sama tetapi jumlah yang berbeda . Ini karena kita dapat memanggil
f(x)
danf(x,y)
denganf
deklarasi yang sama .TIDAK menyediakan kemampuan untuk mendeklarasikan beberapa metode dengan nama yang sama tetapi tipe yang berbeda . Ini karena PHP compiler harus mengartikan
f($integer,$string)
sebagai fungsi yang sama ituf($string,$integer)
.Lihat juga dokumentasi kelebihan PHP5 untuk penjelasan "kelebihan muatan non-tradisional".
sumber