Một tài liệu tham khảo PHP 8.3+ có thể tìm kiếm và in được — cú pháp, chuỗi, mảng, hàm, lớp, enum, attribute và các tính năng hiện đại. Miễn phí.

Cơ bản & kiểu

10
declare(strict_types=1);
Bắt buộc kiểm tra kiểu vô hướng nghiêm ngặt
$x = 1;
Biến bắt đầu bằng dấu đô la
const MAX = 100;
Hằng thời điểm biên dịch
gettype($x)
Lấy kiểu của một giá trị
(int) $x
Ép kiểu thành số nguyên
is_int($x)
Hàm kiểm tra kiểu (is_string, ...)
int|string $x
Khai báo kiểu union
?string $x
Kiểu nullable (string hoặc null)
$a ?? 'default'
Toán tử null coalescing
$a ??= 'default'
Gán chỉ khi null

Chuỗi

11
"Hello $name"
Nháy kép nội suy biến
'literal $x'
Nháy đơn là nguyên văn
$a . $b
Nối chuỗi
strlen($s)
Độ dài byte của chuỗi
str_contains($s, 'a')
Kiểm tra chuỗi con
str_starts_with($s, 'a')
Kiểm tra tiền tố
substr($s, 0, 3)
Trích một phần chuỗi
str_replace('a', 'b', $s)
Thay thế mọi lần xuất hiện
explode(',', $s)
Tách thành mảng
sprintf('%05.2f', $n)
Xuất chuỗi định dạng
trim($s)
Loại bỏ khoảng trắng bao quanh

Mảng

11
$a = [1, 2, 3];
Mảng chỉ số
$a = ['k' => 'v'];
Mảng kết hợp
array_map(fn($x) => $x * 2, $a)
Biến đổi từng phần tử
array_filter($a, fn($x) => $x > 0)
Giữ phần tử khớp
array_reduce($a, $fn, 0)
Rút gọn về một giá trị
in_array($v, $a, true)
Kiểm tra giá trị nghiêm ngặt
array_keys($a)
Lấy tất cả key
array_merge($a, $b)
Gộp mảng
[...$a, ...$b]
Trải/gộp mảng
count($a)
Số phần tử
[$x, $y] = $a;
Phá vỡ cấu trúc mảng

Hàm

9
function f(int $a): int {}
Tham số và trả về có kiểu
function f(int $a = 1) {}
Giá trị tham số mặc định
function f(int ...$nums) {}
Tham số biến thiên
f(...$args)
Trải đối số
f(name: 'Sam', age: 30)
Đối số có tên
$fn = fn($x) => $x + 1;
Arrow function (tự bắt phạm vi)
function () use ($x) {}
Closure bắt một biến
$fn = strlen(...);
Cú pháp callable hạng nhất
function f(): never {}
Không bao giờ trả về (throw hoặc exit)

Luồng điều khiển

9
if ($a) {} elseif ($b) {} else {}
Nhánh điều kiện
$a ? $b : $c
Biểu thức ba ngôi
$a ?: $b
Ba ngôi ngắn (dự phòng falsy)
match ($x) { 1, 2 => 'a', default => 'b' }
match nghiêm ngặt, theo biểu thức
switch ($x) { case 1: break; }
Nhánh đa hướng lỏng lẻo
foreach ($a as $k => $v) {}
Duyệt key và giá trị
for ($i = 0; $i < 10; $i++) {}
Vòng lặp đếm
while ($cond) {}
Lặp khi điều kiện đúng
break / continue
Thoát hoặc bỏ qua vòng lặp

Class & OOP

10
class A extends B implements C {}
Kế thừa và interface
public function __construct(private int $id) {}
Đẩy thuộc tính qua constructor
public readonly string $name;
Bất biến sau khi khởi tạo
public function f(): static {}
Trả về kiểu ràng buộc muộn
static::create()
Ràng buộc static muộn
$obj?->method()
Gọi phương thức an toàn null
abstract class A {}
Không thể khởi tạo trực tiếp
trait T {} use T;
Mã ngang dùng lại được
$obj instanceof A
Kiểm tra kiểu lúc chạy
A::class
Chuỗi tên class đầy đủ

Enum

9
enum Status { case Active; case Draft; }
Enum thuần
enum Status: string { case A = 'a'; }
Enum có giá trị (string/int)
Status::Active
Tham chiếu một case của enum
Status::from('a')
Tạo từ giá trị nền
Status::tryFrom('x')
Trả về null nếu không hợp lệ
Status::cases()
Mảng tất cả các case
$status->value
Giá trị nền của một case
$status->name
Tên của case
enum E { public function label() {} }
Enum có thể có phương thức

Xử lý lỗi

9
try {} catch (Throwable $e) {}
Bắt lỗi và ngoại lệ
catch (TypeError | ValueError $e)
Bắt nhiều kiểu
catch (Exception)
catch không bắt (không có biến)
finally {}
Luôn chạy sau try/catch
throw new RuntimeException('x')
Ném một ngoại lệ
throw $e;
Ném lại ngoại lệ đã bắt
$x = $v ?? throw new Error();
throw như một biểu thức
$e->getMessage()
Đọc thông báo lỗi
$e->getPrevious()
Lấy ngoại lệ liên kết

Attribute & hiện đại

9
#[Attribute] class Route {}
Khai báo attribute tùy chỉnh
#[Route('/home')]
Áp dụng attribute vào đích
new ReflectionClass($x)
Soi class qua reflection
$ref->getAttributes()
Đọc các attribute đã khai báo
json_encode($data)
Tuần tự hóa thành JSON
json_decode($s, true)
Giải mã JSON thành mảng
array_is_list($a)
True nếu key là 0..n theo thứ tự
str_word_count($s)
Đếm từ trong chuỗi
$obj::class
Tên class từ một instance

Không có mục nào khớp với “:q”.


Cần trợ giúp?
Gặp sự cố với công cụ này? Hãy cho đội ngũ của chúng tôi biết.
Báo cáo sự cố

Thêm công cụ miễn phí này vào trang web của riêng bạn — sao chép và dán mã bên dưới.