ฉันเพิ่งเห็นวิดีโอเกี่ยวกับฟีเจอร์ PHP 7.4 ที่กำลังจะมาถึงและเห็น??=
ผู้ให้บริการรายใหม่นี้ ฉันรู้จัก??
ผู้ดำเนินการอยู่แล้ว แตกต่างกันอย่างไร
ฉันเพิ่งเห็นวิดีโอเกี่ยวกับฟีเจอร์ PHP 7.4 ที่กำลังจะมาถึงและเห็น??=
ผู้ให้บริการรายใหม่นี้ ฉันรู้จัก??
ผู้ดำเนินการอยู่แล้ว แตกต่างกันอย่างไร
คำตอบ:
จากเอกสาร :
รวมตัวกันเท่ากับหรือ = ผู้ประกอบการเป็นผู้ประกอบการที่ได้รับมอบหมาย หากพารามิเตอร์ด้านซ้ายเป็นโมฆะให้กำหนดค่าพารามิเตอร์พารามิเตอร์ด้านขวาให้กับพารามิเตอร์ด้านซ้าย หากค่าไม่เป็นโมฆะจะไม่มีการดำเนินการใด ๆ
ตัวอย่าง:
// The folloving lines are doing the same
$this->request->data['comments']['user_id'] = $this->request->data['comments']['user_id'] ?? 'value';
// Instead of repeating variables with long names, the equal coalesce operator is used
$this->request->data['comments']['user_id'] ??= 'value';
ดังนั้นจึงเป็นเพียงชวเลขเพื่อกำหนดค่าหากไม่ได้รับการกำหนดมาก่อน
ในPHP 7นี้เปิดตัวครั้งแรกช่วยให้นักพัฒนาสามารถตรวจสอบ isset () รวมกับผู้ประกอบการที่สาม ตัวอย่างเช่นก่อน PHP 7 เราอาจมีรหัสนี้:
$data['username'] = (isset($data['username']) ? $data['username'] : 'guest');
เมื่อPHP 7เปิดตัวเราได้รับความสามารถในการเขียนสิ่งนี้แทน:
$data['username'] = $data['username'] ?? 'guest';
อย่างไรก็ตามตอนนี้เมื่อPHP 7.4ได้รับการเผยแพร่สิ่งนี้สามารถทำให้ง่ายยิ่งขึ้นไปอีก:
$data['username'] ??= 'guest';
กรณีหนึ่งที่ไม่สามารถใช้งานได้หากคุณต้องการกำหนดค่าให้กับตัวแปรอื่นดังนั้นคุณจะไม่สามารถใช้ตัวเลือกใหม่นี้ได้ ดังนั้นแม้ว่าจะมีกรณีการใช้งานที่ จำกัด
ตัวดำเนินการกำหนดค่าการรวมตัวกันเป็นโมฆะเป็นวิธีการกำหนดผลลัพธ์แบบย่อของตัวดำเนินการรวมตัวเป็นโมฆะแบบย่อ
ตัวอย่างจากบันทึกประจำรุ่นอย่างเป็นทางการ:
$array['key'] ??= computeDefault();
// is roughly equivalent to
if (!isset($array['key'])) {
$array['key'] = computeDefault();
}
ตัวอย่างเอกสาร :
$array['key'] ??= computeDefault();
// is roughly equivalent to
if (!isset($array['key'])) {
$array['key'] = computeDefault();
}
The folloving lines...