Mengapa fungsi dan metode dalam PHP case-insensitive?

107

Fungsi dan metode dalam PHP peka huruf besar kecil seperti yang diilustrasikan dalam contoh berikut.

function ag()
{
    echo '2';
}

Ag();
class test {
    function clMe()
    {
        echo 'hi';
    }
}

$instance = new test;
$instance->clme();

Namun tidak demikian halnya dengan variabel. Apa alasannya?

pengguna198729
sumber
161
PHP tidak membutuhkan alasan yang kaku!
Max Shawabkeh
2
"Karena tukang sup berkata begitu." Tidak ada alasan, tapi referensi: php.net/manual/en/functions.user-defined.php (antara contoh 3 dan 4), php.net/manual/en/language.variables.basics.php
outis
2
class Share{ share($str){ echo $str; } } $sh = new Share(); $sh->share("string");Anda mungkin terkejut melihat dua panggilan ke function share ($ str). yang pertama karena c'tor dan panggilan eksplisit kedua untuk alasan yang sama !!
vivek.m
1
@outis, Apa yang Anda maksud dengan "pria sup"?
Pacerier
1
@outis, Anda mengacu pada "Sup Nazi" dari Seinfeld. YouTube , Wikipedia
Kevin Traas

Jawaban:

98

Izinkan saya mengutip dari Wawancara - Pembuat PHP, Rasmus Lerdorf

Versi pertama PHP adalah seperangkat alat sederhana yang saya kumpulkan untuk Situs web saya dan untuk beberapa proyek. Satu alat melakukan beberapa pencatatan log ke database mSQL, yang lain bertindak sebagai penerjemah data formulir. Saya berakhir dengan sekitar 30 program CGI kecil berbeda yang ditulis dalam C sebelum saya bosan, dan menggabungkan semuanya menjadi satu perpustakaan C. Saya kemudian menulis parser yang sangat sederhana yang akan memilih tag dari file HTML dan menggantinya dengan output dari fungsi yang sesuai di pustaka C.

Parser sederhana perlahan-lahan berkembang untuk menyertakan tag bersyarat, kemudian tag loop, fungsi, dll. Saya tidak pernah berpikir saya sedang menulis bahasa scripting. Saya hanya menambahkan sedikit fungsionalitas ke parser pengganti makro. Saya masih menulis semua logika bisnis saya yang sebenarnya di C.

Saya telah membaca di suatu tempat bahwa karena semua fungsi yang diperkenalkan pada dasarnya terasa seperti tag dalam dokumen HTML dan karena tag HTML tidak peka huruf besar / kecil, dia memilih nama fungsi dalam PHP agar tidak membedakan huruf besar / kecil. Kemudian fitur ini tetap ada dalam bahasa tersebut.

Shailesh Kumar
sumber
66
Saya juga ingat kutipan dari Rasmus dalam konferensi PHP di Paris yang mengatakan kurang lebih: "Saya jelas bukan programmer yang baik, dalam hal mengikuti aturan atau standar pengkodean yang ketat, tetapi saya dapat mengatakan bahwa jika Anda mengandalkan sensitivitas huruf mengenali satu nama fungsi dari yang lain, Anda dalam masalah serius! "
Tom Desp
1
apakah masih case-insensitive di masa mendatang?
vee
4
Jadi itulah mengapa programmer php menggunakan garis bawah daripada camelcase saat menamai fungsinya.
paperstreet7
2
@ paperstreet7 Beberapa melakukannya. Yang bagus tidak. Setidaknya sekarang tidak lagi.
Dan
13
@dan, banyak pemrogram yang "baik" menggunakan garis bawah. Nyatanya, PSR-0 sengaja tidak memberikan rekomendasi. Seorang programmer yang baik mengambil garis bawah atau camelcase dan berpegang pada konvensi itu. Membuat pilihan itu untuk mengukur apakah seseorang adalah programmer yang baik adalah hal yang konyol.
jdp
34

Ya, nama fungsi dan metode tidak peka huruf besar / kecil.

Dan ya, nama variabel peka huruf besar kecil.

Saya tidak yakin ada alasan untuk itu - kecuali sudah lama begini, dan, tetap demikian, karena alasan kompatibilitas ke belakang.



Sebagai referensi, beberapa tautan / kutipan ke berbagai halaman manual:

Untuk fungsi ( kutipan ) :

Catatan: Nama fungsi tidak peka huruf besar / kecil, meskipun biasanya merupakan bentuk yang baik untuk memanggil fungsi seperti yang muncul dalam deklarasinya.

Dan metode tidak lebih dari fungsi dalam objek - terutama ketika kita memikirkan tentang PHP 4 dan kompatibilitas ke belakang.


Dan, untuk variabel ( mengutip ):

Variabel dalam PHP diwakili oleh tanda dolar diikuti dengan nama variabel. Nama variabel peka huruf besar kecil.

Dan properti objek tidak lebih dari variabel dalam objek - pernyataan yang sama tentang PHP 4 dan kompatibilitas mundur.

Pascal MARTIN
sumber