ภาพรวม
ใน PHP คุณสามารถใส่ส่วนเสริม$
ไว้ด้านหน้าของตัวแปรเพื่อให้เป็นตัวแปรแบบไดนามิก:
$$variableName = $value;
แม้ว่าฉันจะไม่แนะนำก็ตามคุณยังสามารถเชื่อมโยงพฤติกรรมนี้:
$$$$$$$$DoNotTryThisAtHomeKids = $value;
คุณสามารถ แต่ไม่บังคับให้ใส่$variableName
ระหว่าง{}
:
${$variableName} = $value;
การใช้{}
บังคับเฉพาะเมื่อชื่อตัวแปรของคุณเป็นองค์ประกอบหลายค่าเช่นนี้:
${$variableNamePart1 . $variableNamePart2} = $value;
อย่างไรก็ตามขอแนะนำให้ใช้เสมอ{}
เพราะสามารถอ่านได้มากขึ้น
ความแตกต่างระหว่าง PHP5 และ PHP7
อีกเหตุผลหนึ่งที่ใช้กันเสมอ{}
คือ PHP5 และ PHP7 มีวิธีจัดการตัวแปรแบบไดนามิกที่แตกต่างกันเล็กน้อยซึ่งส่งผลให้เกิดผลลัพธ์ที่แตกต่างกันในบางกรณี
ใน PHP7 ตัวแปรแบบไดนามิกคุณสมบัติและเมธอดจะถูกประเมินอย่างเข้มงวดตามลำดับจากซ้ายไปขวาเมื่อเทียบกับกรณีพิเศษใน PHP5 ตัวอย่างด้านล่างแสดงว่าลำดับการประเมินมีการเปลี่ยนแปลงอย่างไร
กรณีที่ 1: $$foo['bar']['baz']
- PHP5 interpetation:
${$foo['bar']['baz']}
- PHP7 interpetation:
${$foo}['bar']['baz']
กรณีที่ 2: $foo->$bar['baz']
- PHP5 interpetation:
$foo->{$bar['baz']}
- PHP7 interpetation:
$foo->{$bar}['baz']
กรณีที่ 3: $foo->$bar['baz']()
- PHP5 interpetation:
$foo->{$bar['baz']}()
- PHP7 interpetation:
$foo->{$bar}['baz']()
กรณีที่ 4: Foo::$bar['baz']()
- PHP5 interpetation:
Foo::{$bar['baz']}()
- PHP7 interpetation:
Foo::{$bar}['baz']()