PHP'deki işlevler ve yöntemler neden büyük / küçük harf duyarlıdır?


107

PHP'deki işlevler ve yöntemler, aşağıdaki örnekte gösterildiği gibi büyük / küçük harfe duyarlıdır.

function ag()
{
    echo '2';
}

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

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

Ancak değişkenlerde durum bu değildir. Gerekçe nedir?


161
PHP'nin iğrenç mantığa ihtiyacı yok!
Max Shawabkeh

2
"Çünkü çorbacı öyle diyor." Resim mantık ama referanslar: php.net/manual/en/functions.user-defined.php (örnekler 3 ve 4 arasında), php.net/manual/en/language.variables.basics.php
outis

2
class Share{ share($str){ echo $str; } } $sh = new Share(); $sh->share("string");Share ($ str) işlevi için iki çağrı gördüğünüzde şaşırabilirsiniz. birincisi c'tor nedeniyle ve ikinci açık çağrı aynı nedenlerle !!
vivek.m

1
@outis, "çorba adam" ile ne demek istiyorsun?
Pacerier

1
@outis, Seinfeld'den "Soup Nazi" den bahsediyorsun. YouTube , Wikipedia
Kevin Traas

Yanıtlar:


98

Röportajdan alıntı yapmama izin verin - PHP'nin Yaratıcısı, Rasmus Lerdorf

PHP'nin ilk sürümü, Web sitem ve birkaç proje için bir araya getirdiğim basit bir araç setiydi. Bir araç, bir mSQL veritabanına bazı süslü girişler yaptı, diğeri ise form veri yorumlayıcısı olarak görev yaptı. Bıkmadan önce C dilinde yazılmış yaklaşık 30 farklı küçük CGI programı hazırladım ve hepsini tek bir C kütüphanesinde birleştirdim. Daha sonra HTML dosyalarından etiketleri seçecek ve bunları C kütüphanesindeki karşılık gelen işlevlerin çıktılarıyla değiştirecek çok basit bir ayrıştırıcı yazdım.

Basit ayrıştırıcı, koşullu etiketleri, ardından döngü etiketlerini, işlevleri vb. İçerecek şekilde yavaş yavaş büyüdü. Hiçbir noktada bir betik dili yazdığımı düşünmemiştim. Makro değiştirme ayrıştırıcısına biraz işlevsellik ekliyordum. Hala tüm gerçek iş mantığımı C'de yazıyordum.

Bir yerde okudum ki, tanıtılan tüm işlevler bir HTML belgesindeki etiketler gibi hissedildiğinden ve HTML etiketleri büyük / küçük harf duyarlı olduğundan, PHP'deki işlev adlarını büyük / küçük harfe duyarlı olmamak için seçti. Daha sonra bu özellik dilde kaldı.


66
Ayrıca Paris'teki bir PHP konferansında Rasmus'tan aşağı yukarı şöyle bir alıntı hatırlıyorum: "Katı kodlama kurallarına veya standartlarına uyma açısından kesinlikle iyi bir programcı değilim, ancak büyük / küçük harfe duyarlılığa güveniyorsanız söyleyebilirim. bir işlev adını diğerinden tanırsanız, ciddi bir sorun yaşarsınız! "
Tom Desp

1
gelecekte hala büyük / küçük harf duyarlı mı?
vee

4
Bu yüzden php programcıları işlevlerini adlandırırken camelcase yerine alt çizgi kullanırlar.
paperstreet7

2
@ paperstreet7 Bazıları yapar. İyi olanlar yapmaz. En azından artık değil.
Dan

13
@dan, birçok "iyi" programcı alt çizgi kullanıyor. Aslında, PSR-0 kasıtlı olarak bir tavsiyede bulunmaz. İyi bir programcı alt çizgileri veya deve harfleri seçer ve bu kurala sadık kalır. Bu seçimi, birinin iyi bir programcı olup olmadığının ölçüsü haline getirmek oldukça aptalca.
jdp

34

Evet, işlevler ve yöntem adları büyük / küçük harfe duyarlı değildir.

Ve evet, değişken isimleri büyük / küçük harfe duyarlıdır.

Bunun bir nedeni olduğundan emin değilim - uzun zamandır bu şekilde olması ve geriye dönük uyumluluk nedenleriyle durum böyle kalması dışında.



Referans olarak, kılavuzun çeşitli sayfalarına birkaç bağlantı / alıntı:

İşlevler için ( alıntı ) :

Not: İşlev adları büyük / küçük harfe duyarlı değildir, ancak işlevlerin bildirimlerinde göründükleri gibi çağırılması genellikle iyi bir biçimdir.

Ve yöntemler nesnelerdeki işlevlerden çok daha fazlası değildir - özellikle PHP 4 ve geriye dönük uyumluluk hakkında düşündüğümüzde.


Ve değişkenler için ( alıntı ):

PHP'deki değişkenler bir dolar işareti ve ardından değişkenin adı ile temsil edilir. Değişken adı büyük / küçük harfe duyarlıdır.

Ve nesne özellikleri, nesnelerdeki değişkenlerden çok daha fazlası değildir - PHP 4 ve geriye dönük uyumluluk hakkında aynı açıklama.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.