มีอะไรใหม่บ้างใน PHP 8.1
17 มิ.ย. 64 , 09:52
เลือกๆ มาเฉพาะอันที่ผมคิดว่าเจ๋ง + ได้ใช้งานแหงๆ นะครับ จริงๆ มันก็มีอะไรใหม่ๆ เยอะนั่นล่ะ

เหวย ในที่สุดมันก็มาแล้ว enum ที่ชาวบ้านชาวช่องเค้ามีกันมาตั้งแต่สิบๆ ปีที่แล้ว , แต่ก็นะ มาช้าดีกว่าไม่มา

วิธีการใช้งาน ก็ประมาณนี้เลย

enum Status {
  case None;
  case Active;
  case Closed;
}

Status $status = Status::None;

if($status === Status::Active)

จริงๆ การใช้ ... (ไข่ปลา รึที่เรียกว่า spread operator) ในการ unpacking มีมาตั้งแต่ php 7.4 แล้ว แต่อันนั้น ทำได้เฉพาะ Numberic Array

แต่งวดนี้ ใช้ได้กับ Associative Array แล้วจ้า ขอบอกว่า ถ้าเคยเขียน Js น่าจะพอรู้ว่า มันโครตสะดวก ในการบริหารตัวแปลเลยทีเดียวเชียว

$array1 = ["a" => 1];

$array2 = ["b" => 2];

$array = ["a" => 0, ...$array1, ...$array2];

var_dump($array); // ["a" => 1, "b" => 2]

เออ อันนี้ก็งง ว่าทำไม มันไม่มีมาตั้งนานละ

อันนี้เอาไว้ตรวจสอบว่า Array นั้นเป็น Numberic Array รึ Associative Array แน่

$list = ["a", "b", "c"];

array_is_list($list); // true

$notAList = [1 => "a", 2 => "b", 3 => "c"];

array_is_list($notAList); // false

$alsoNotAList = ["a" => "a", "b" => "b", "c" => "c"];

array_is_list($alsoNotAList); // false

ใน class เราจะสามารถประกาศ const แบบ final ได้แล้ว ในกรณีที่เราไม่อยากให้ class ที่สืบทอดไป override ค่าใหม่

class Foo
{
    final public const X = "bar";
}