เหตุใดฟังก์ชันและวิธีการใน PHP จึงไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่


107

ฟังก์ชันและวิธีการใน PHP ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่ตามที่แสดงในตัวอย่างต่อไปนี้

function ag()
{
    echo '2';
}

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

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

แต่นั่นไม่ใช่กรณีที่มีตัวแปร อะไรคือเหตุผล?


161
PHP ไม่ต้องการเหตุผลที่ไม่มีกลิ่นเหม็น!
Max Shawabkeh

2
“ เพราะคนทำซุปพูดอย่างนั้น” ไม่มีเหตุผล แต่การอ้างอิง: php.net/manual/en/functions.user-defined.php (ระหว่างตัวอย่าง 3 และ 4), php.net/manual/en/language.variables.basics.php
outis

2
class Share{ share($str){ echo $str; } } $sh = new Share(); $sh->share("string");คุณอาจแปลกใจที่เห็นการเรียกใช้ฟังก์ชันร่วมกันสองครั้ง ($ str) คนแรกเพราะ c'tor และสองโทรชัดเจนด้วยเหตุผลเดียวกัน !!
vivek.m

1
@outis "ซุปตาร์แมน" หมายความว่าอย่างไร?
Pacerier

1
@outis คุณกำลังหมายถึง "ซุปนาซี" จาก Seinfeld YouTube , Wikipedia
Kevin Traas

คำตอบ:


98

ขออ้างจากบทสัมภาษณ์ - ผู้สร้าง PHP, Rasmus Lerdorf

PHP เวอร์ชันแรกเป็นชุดเครื่องมือง่ายๆที่ฉันรวบรวมไว้สำหรับเว็บไซต์ของฉันและสำหรับสองโครงการ เครื่องมือตัวหนึ่งทำการบันทึกการเข้าสู่ฐานข้อมูล mSQL แบบแฟนซีอีกเครื่องมือหนึ่งทำหน้าที่เป็นตัวแปลข้อมูลแบบ ฉันลงเอยด้วยโปรแกรม CGI เล็ก ๆ ประมาณ 30 โปรแกรมที่เขียนด้วย C ก่อนที่ฉันจะเบื่อหน่ายและรวมทั้งหมดไว้ในไลบรารี C เดียว จากนั้นฉันก็เขียนโปรแกรมแยกวิเคราะห์ที่เรียบง่ายซึ่งจะเลือกแท็กจากไฟล์ HTML และแทนที่ด้วยเอาต์พุตของฟังก์ชันที่เกี่ยวข้องในไลบรารี C

ตัวแยกวิเคราะห์แบบง่ายค่อยๆเพิ่มขึ้นอย่างช้าๆเพื่อรวมแท็กตามเงื่อนไขจากนั้นแท็กวนซ้ำฟังก์ชัน ฯลฯ ฉันคิดว่าฉันกำลังเขียนภาษาสคริปต์อยู่ ฉันแค่เพิ่มฟังก์ชันเล็กน้อยให้กับตัวแยกวิเคราะห์การแทนที่มาโคร ฉันยังคงเขียนตรรกะทางธุรกิจที่แท้จริงของฉันใน C.

ฉันได้อ่านที่ไหนสักแห่งเนื่องจากฟังก์ชันทั้งหมดที่แนะนำโดยพื้นฐานแล้วให้ความรู้สึกเหมือนแท็กในเอกสาร HTML และเนื่องจากแท็ก HTML ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่เขาจึงเลือกชื่อฟังก์ชันใน PHP ให้ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่ ต่อมาคุณลักษณะนี้ยังคงอยู่ในภาษา


66
ฉันยังจำคำพูดจาก Rasmus ในการประชุม PHP ในปารีสที่บอกว่าไม่มากก็น้อย: "ฉันไม่ใช่โปรแกรมเมอร์ที่ดีแน่นอนในแง่ของการปฏิบัติตามกฎหรือมาตรฐานการเข้ารหัสที่เข้มงวด แต่ฉันสามารถพูดได้ว่าหากคุณใช้ความไวของตัวพิมพ์ในการ จำชื่อฟังก์ชันหนึ่งจากอีกชื่อหนึ่งคุณกำลังมีปัญหาร้ายแรง! "
Tom Desp

1
ในอนาคตยังไม่คำนึงถึงตัวพิมพ์เล็กหรือใหญ่
vee

4
นั่นเป็นเหตุผลที่โปรแกรมเมอร์ php ใช้ขีดล่างแทน camelcase เมื่อตั้งชื่อฟังก์ชัน
paperstreet7

2
@ paperstreet7 บ้าง. คนดีไม่ได้ อย่างน้อยก็ไม่ใช่อีกต่อไป
ด่าน

13
@dan โปรแกรมเมอร์ "เก่ง ๆ " มากมายใช้ขีดล่าง ในความเป็นจริง PSR-0 ไม่ได้ให้คำแนะนำโดยเจตนา โปรแกรมเมอร์ที่ดีจะเลือกขีดล่างหรืออูฐและยึดมั่นในหลักการนั้น การเลือกตัวเลือกนั้นเป็นการวัดว่าใครเป็นโปรแกรมเมอร์ที่ดีนั้นค่อนข้างโง่
jdp

34

ใช่ชื่อฟังก์ชันและวิธีการไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่

และใช่ชื่อตัวแปรจะคำนึงถึงขนาดตัวพิมพ์

ฉันไม่แน่ใจว่ามีเหตุผลสำหรับสิ่งนั้น - ยกเว้นว่าเป็นแบบนี้มานานแล้วและยังคงเป็นเช่นนั้นด้วยเหตุผลด้านความเข้ากันได้ย้อนหลัง



เพื่อเป็นข้อมูลอ้างอิงลิงก์ / คำพูดสองสามรายการไปยังหน้าต่างๆของคู่มือ:

สำหรับฟังก์ชัน( quoting ) :

หมายเหตุ: ชื่อฟังก์ชันไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่แม้ว่าโดยปกติแล้วจะเป็นรูปแบบที่ดีในการเรียกใช้ฟังก์ชันตามที่ปรากฏในการประกาศ

และวิธีการก็ไม่ได้มีมากไปกว่าฟังก์ชันในออบเจ็กต์ - โดยเฉพาะอย่างยิ่งเมื่อเราคิดถึง PHP 4 และความเข้ากันได้แบบย้อนกลับ


และสำหรับตัวแปร (การอ้างอิง ):

ตัวแปรใน PHP แสดงด้วยเครื่องหมายดอลลาร์ตามด้วยชื่อของตัวแปร ชื่อตัวแปรคำนึงถึงตัวพิมพ์เล็กและใหญ่

และคุณสมบัติของอ็อบเจกต์ก็ไม่ได้มากกว่าตัวแปรในอ็อบเจกต์มากนัก - ข้อสังเกตเดียวกันเกี่ยวกับ PHP 4 และความเข้ากันได้แบบย้อนกลับ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.