Function match trong PHP
Nếu trong trường hợp tùy vào điều kiện là cái gì thì bạn phải trả về giá trị tương ứng mình sẽ nghĩ ngay đến cái gì?
1. If - else if - else
public function driver(string $driver): Driver{
if ($driver === 'Github'){
return new GithubDriver();
} else if($driver === 'Gitlab'){
return new GitlabDriver();
} else {
throw new GitException("The driver $driver is not valid");
}
}
if ($driver === 'Github'){
return new GithubDriver();
} else if($driver === 'Gitlab'){
return new GitlabDriver();
} else {
throw new GitException("The driver $driver is not valid");
}
}
2. Switch - case
public function driver(string $driver): Driver {
switch ($driver)
{
case 'Github': //code block break;
case 'Gitlab': //code block; break;
default: //code block
}
}
switch ($driver)
{
case 'Github': //code block break;
case 'Gitlab': //code block; break;
default: //code block
}
}
Cách nào cũng được hết cũng rỏ ràng nhưng mà nếu gọi là code gọn và hiệu quả nhất thì từ PHP 8 đã có cung cấp 1 function trên cả tuyệt vời match
match với phiên bản chặt chẽ và hiện đại hơn so với người anh switch và if
Trong một số trường hợp switch sẽ cung cấp linh hoạt hơn so với match, đặc biệt là với các khối code có nhiều dòng. Tuy nhiên, sự nghiêm ngặt của toán tử match là hấp dẫn và pattern matching sẽ là một yếu tố thay đổi cuộc chơi cho PHP.
Vậy match có gì khác so với if và switch
1. Không ép kiểu
2. Giá trị không xác định gây ra lỗi
3. Chỉ có các biểu thức một dòng
4. Kết hợp điều kiện
5. Throwing exceptions
6. Pattern matching
2. Giá trị không xác định gây ra lỗi
3. Chỉ có các biểu thức một dòng
4. Kết hợp điều kiện
5. Throwing exceptions
6. Pattern matching
Với những phân tích bên trên thì theo bạn match , if hay switch?