ใน PHP เวอร์ชันเก่า เราประสบปัญหาความไม่สอดคล้องกัน ตัวอย่างเช่น:${$first ['name']} ไวยากรณ์นี้อาจสร้างความสับสนหรือเราสามารถพูดได้ว่าไวยากรณ์ไม่สอดคล้องกัน เพื่อแก้ปัญหาความไม่สอดคล้องกัน PHP 7 ได้เพิ่มไวยากรณ์ใหม่ที่เรียกว่า “รูปแบบตัวแปรสม่ำเสมอ”
ไวยากรณ์ตัวแปรชุดเดียวกันจะประเมินตัวแปรจากซ้ายไปขวา เราจำเป็นต้องเพิ่มวงเล็บปีกกาเพื่อใช้ไวยากรณ์ตัวแปรชุดเดียวกัน ตัวอย่างเช่น
echo ${$first[‘name’]};
รูปแบบเดียวกันของตัวแปรช่วยให้สามารถใช้ตัวดำเนินการร่วมกันได้ และยังทำลายความเข้ากันได้แบบย้อนหลังในบางนิพจน์ไม่ว่าจะใช้การประเมินที่เก่ากว่า
ตัวอย่าง
<?php $x = (function() { return 20 - 10; }) (); echo "$x\n"; ?>
ผลลัพธ์
ผลลัพธ์สำหรับโปรแกรม PHP ข้างต้นจะเป็น:
10
หมายเหตุ: โปรแกรมข้างต้นจะเรียกใช้นิพจน์ฟังก์ชันทันที
วากยสัมพันธ์ของตัวแปรชุดเดียวกันใช้ชุดค่าผสมใหม่ของไวยากรณ์ที่มีอยู่ ตัวอย่างเช่น
$foo([‘bar’])();
วากยสัมพันธ์ของตัวแปรชุดเดียวกันสามารถละเลยอักขระในสตริงที่ส่งคืนโดยฟังก์ชันได้
[$obj, $obj1] [0]->pro;
ในบางกรณี PHP 7 รองรับโคลอนคู่ที่ซ้อนกัน (::),
$foo[‘bar’]::$baz;
วิธีการซ้อน/การเรียกใช้ฟังก์ชัน
เราสามารถใช้เมธอดที่ซ้อนกันและการเรียกใช้ฟังก์ชันหรือเรียกอะไรก็ได้เพื่อเพิ่มวงเล็บเป็นสองเท่า
ตัวอย่าง
foo()(); //return by a function callable $foo->bar()(); // return by an instance method Foo::bar()(); // static method $foo()(); // return by another callable
การแสดงความเห็นตามอำเภอใจ
ใน PHP เราสามารถละเลยนิพจน์ที่ถูกต้อง รวมถึงวงเล็บด้วย ตัวอย่างเช่น
(exp) [‘foo’] ; // It will access an array key (exp)->foo; // This will access the property (exp)->foo(); // It will call to a method etc.
ตัวอย่าง
<?php function emp() { echo "This is emp() \n"; }; function dept() { echo "This is dept() \n"; return emp; }; function sub() { echo "This is sub()\n"; return dept; }; sub(); echo "----------------\n"; sub()(); echo "----------------\n"; sub()()(); ?>
ผลลัพธ์
ผลลัพธ์สำหรับโปรแกรมข้างต้นจะเป็น −
This is sub() ------------- This is sub() This is dept() ------------- This is sub() This is dept() This is emp()