Bảng tra cứu PHP
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
10declare(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
9function 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
9if ($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
10class 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
9enum 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
9try {} 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.