บริษัทวิมีโอ
สดุดีระบุถึงปัญหาส่วนใหญ่ที่เกี่ยวข้องกับการใช้ประเภทที่ไม่ถูกต้องตลอดจนปัญหาต่างๆ
นอกจากนี้ยังมีเครื่องมือการเขียนโปรแกรมที่ปลอดภัยไว้ให้บริการ
/** @var string|null */
$a = ฟู();
/** @var string $a */
echo strpos($a, 'สวัสดี');
/** @ สดุดี-assert-if-true B $a */
ฟังก์ชั่น isValidB(A $a) : bool {
ส่งคืน $a อินสแตนซ์ของ B && $a->isValid();
}
เพื่อกำจัดปัญหาที่พบโดยอัตโนมัติจึงมียูทิลิตี้ Psalter ซึ่งรองรับปลั๊กอินและ
ในสดุดีฉบับใหม่
การตรวจสอบความถูกต้องจะใช้เมื่อใช้ฟังก์ชันต่างๆ เช่น echo, exec, include และ header เมื่อวิเคราะห์ความจำเป็นในการหลบหนี ประเภทข้อมูล เช่น ข้อความ สตริงที่มีโค้ด SQL, HTML และเชลล์ สตริงที่มีพารามิเตอร์การรับรองความถูกต้องจะถูกนำมาพิจารณาด้วย โหมดที่นำเสนอช่วยให้คุณสามารถระบุช่องโหว่ในโค้ดที่นำไปสู่การเขียนสคริปต์ข้ามไซต์ (XSS) หรือการทดแทน SQL
นอกจากนี้ยังสามารถสังเกตได้
-
เพิ่มพลัง คอมไพเลอร์ JIT ซึ่งการใช้จะช่วยเพิ่มผลผลิต - สนับสนุน
ประเภทสหภาพแรงงาน กำหนดคอลเลกชันตั้งแต่สองประเภทขึ้นไป (เช่น “ฟังก์ชั่นสาธารณะ foo(Foo|Bar $input): int|float;”) - สนับสนุน
คุณลักษณะ (คำอธิบายประกอบ) ที่อนุญาตให้คุณผูกข้อมูลเมตา (เช่นข้อมูลประเภท) เข้ากับคลาสโดยไม่ต้องใช้ไวยากรณ์ Docblock -
ไวยากรณ์ที่สั้นลง คำจำกัดความของคลาส ช่วยให้คุณสามารถรวมคำจำกัดความของตัวสร้างและคุณสมบัติได้ - ประเภทการคืนสินค้าใหม่ -
คงที่ . - ประเภทใหม่ -
ผสม ซึ่งสามารถใช้เพื่อกำหนดว่าฟังก์ชันยอมรับพารามิเตอร์ประเภทต่างๆ หรือไม่ - การแสดงออก
โยน เพื่อจัดการกับข้อยกเว้น -
แผนที่อ่อนแอ เพื่อสร้างวัตถุที่สามารถเสียสละได้ในระหว่างการรวบรวมขยะ (เช่น เพื่อจัดเก็บแคชที่ไม่จำเป็น) -
โอกาส ใช้นิพจน์ “::class” สำหรับวัตถุ (คล้ายกับการเรียก get_class()) -
โอกาส คำจำกัดความใน catch block ของข้อยกเว้นที่ไม่ได้ผูกไว้กับตัวแปร -
โอกาส ทิ้งเครื่องหมายจุลภาคไว้หลังองค์ประกอบสุดท้ายในรายการพารามิเตอร์ฟังก์ชัน - อินเทอร์เฟซใหม่
สตริงได้ เพื่อระบุประเภทสตริงหรือข้อมูลใด ๆ ที่สามารถแปลงเป็นสตริงได้ (ซึ่งมีเมธอด __toString()) - ลูกเล่นใหม่
str_มี() ซึ่งเป็นอะนาล็อกแบบง่ายของ strpos สำหรับระบุการเกิดขึ้นของสตริงย่อย เช่นเดียวกับฟังก์ชัน str_starts_with() และ str_ends_with() สำหรับตรวจสอบการจับคู่ที่จุดเริ่มต้นและจุดสิ้นสุดของสตริง - เพิ่มคุณสมบัติแล้ว
fdiv() ซึ่งดำเนินการหารโดยไม่มีข้อผิดพลาดเมื่อหารด้วยศูนย์ -
เปลี่ยน ตรรกะการเข้าร่วมสตริง ตัวอย่างเช่น นิพจน์ 'echo "sum:" $a + $b' ก่อนหน้านี้ถูกตีความว่าเป็น 'echo ("sum: " . $a) + $b' และใน PHP 8 จะถือว่าเป็น 'echo "sum: " ($a + $b)'. -
กระชับขึ้น การตรวจสอบการดำเนินการทางคณิตศาสตร์และบิต เช่น นิพจน์ "[] % [42]" และ "$object + 4" จะส่งผลให้เกิดข้อผิดพลาด -
ดำเนินการแล้ว อัลกอริธึมการเรียงลำดับที่เสถียรซึ่งรักษาลำดับของค่าที่เหมือนกันในการรันที่แตกต่างกัน
ที่มา: opennet.ru