Code Lens (hiển thị số liệu ngay trên dòng code)
- Implementations: Enable
EN: Show count & peek of class/interface implementations →
VN: Hiện số nơi implement & cho phép peek →
Bật. Hữu ích khi làm OOP, trait/interface nhiều. - Overrides: Enable
EN: Show override count & peek →
VN: Hiện số method override & peek →
Bật. Dễ rà soát kế thừa. - Parent: Enable
EN: Show if a method has a parent impl & peek →
VN: Báo có implement ở cha & peek →
Bật. Điều hướng nhanh. - References: Enable
EN: Show reference count & peek →
VN: Đếm nơi được tham chiếu & peek →
Bật. Tìm ảnh hưởng khi refactor. - Usages: Enable
EN: Show trait usages count & peek →
VN: Đếm nơi dùng trait & peek →
Bật. Dự án nhiều trait sẽ cần.
Compatibility (tương thích kiểu)
- Correct For Array Access/Traversable Array Union Types
EN: Normalise ArrayAccess|T[] → ArrayAccess<mixed,T> →
VN: Chuẩn hoá union có mảng sang generic →
Bật. Gợi ý & kiểm tra type ổn định hơn. - Correct For Base Class Static Union Types
EN: Resolve BaseClass|static thành static →
VN: Ưu tiên static đúng ngữ nghĩa late-static →
Bật. Chính xác khi kế thừa. - Prefer Psalm Phpstan Prefixed Annotations
EN: Ưu tiên tag @psalm-/@phpstan- →
VN: Dựa vào chú thích Psalm/PhpStan để suy luận kiểu →
Bật (nếu bạn dùng Psalm/PhpStan hoặc anotations có sẵn).
Tắt nếu dự án không dùng các tag này để tránh nhiễu.
Completion (gợi ý code)
- Fully Qualify Global Constants And Functions
EN: Suggest with leading \ →
VN: Gợi ý kèm backslash global →
Tuỳ. Bật nếu bạn thích rõ scope; Tắt nếu thích code gọn. - Insert Use Declaration ✔
EN/VN: Tự thêm use khi chọn symbol namespaced →
Bật. Tiết kiệm thao tác import. - Max Items (100)
EN/VN: Số item tối đa trong completion →
100 là hợp lý. Tăng nếu bạn muốn nhiều hơn, nhưng có thể rối. - Suggest Object Operator Static Methods
EN: Cho gợi ý static methods với -> →
VN: Đề xuất static method khi dùng toán tử đối tượng →
Tắt để tránh gọi nhầm (khuyến nghị). Bật nếu bạn cố ý muốn thấy tất cả. - Trigger Parameter Hints
EN/VN: Tự chèn () và bật hint tham số →
Bật. Viết nhanh, giảm sai sót.
Diagnostics (cảnh báo & lỗi)
- Enable
EN/VN: Bật hệ thống chẩn đoán →
Bật. - Run: onType
EN: Chạy khi gõ →
VN: Cảnh báo “real-time” →
Giữ onType nếu máy khoẻ; đổi onSave nếu bị lag. - Argument Count / Deprecated / Duplicate Symbols / Embedded Languages / Implementation Errors / Language Constraints / Member Access / Type Errors / Undefined (Class Constants / Constants / Functions / Methods / Properties / Types / Variables) / Unexpected Tokens / Unused Symbols
EN/VN: Từng mục bật cảnh báo tương ứng →
Bật tất cả để code an toàn, trừ khi dự án cũ quá “ồn” thì giảm dần. - No Mixed Type Check
EN: Tắt kiểm tra nghiêm với mixed (nới lỏng) →
VN: Cho phép mixed qua dễ hơn →
Tắt (khuyến nghị strict). Bật nếu codebase nhiều mixed/thiếu khai báo. - Relaxed Type Check
EN: Nới lỏng kiểm tra (cho contravariant rộng) →
VN: Dễ dãi hơn với type →
Tắt (khuyến nghị strict). Bật với dự án legacy để bớt nhiễu.
Environment (môi trường phân giải)
- Document Root
EN: Thư mục entry (chứa index.php) để resolve include/path →
VN: Đặt đúng webroot của app →
Nên set (vd: www/ hay public/). Giúp require/include gợi ý đúng. - Include Paths
EN/VN: Khai báo include_path/thư viện ngoài →
Nên set nếu bạn có lib ngoài (vd: vendor/extra, app/helpers). - PHP Version: 8.4.0
EN/VN: Mục tiêu phiên bản PHP để lint/đề xuất →
Set đúng version chạy thực tế (vd: 8.1/8.2/8.3). Đặt sai sẽ cảnh báo lệch. - Short Open Tag (on)
EN/VN: Parse <? như open tag →
Tắt nếu bạn không dùng short tags (khuyến nghị chuẩn). Bật chỉ khi code cũ cần.
Files (tệp)
- Associations
EN/VN: Ánh xạ glob pattern → ngôn ngữ PHP →
Tuỳ. Dùng khi cần bật tính năng cho đuôi lạ. - Exclude
EN/VN: Loại trừ thư mục khỏi index (git, vendor tests, node_modules, …) →
Giữ mặc định, thêm các thư mục build/cache riêng của bạn để tăng tốc. - Max Size (1,000,000 bytes)
EN/VN: Tệp lớn hơn sẽ bị bỏ qua language features →
Giữ mặc định. Tăng nếu bạn có file PHP lớn bất khả kháng (nhưng cân nhắc chia nhỏ).
Format (định dạng)
- Braces
EN/VN: Kiểu ngoặc {} →
Tuỳ chuẩn team. (PSR-12: ngoặc mở xuống dòng cho class/method) - Format: Enable
Bật. Kết hợp Prettier/PHP CS Fixer hoặc phpcbf sẽ đồng nhất hơn.
PhpDoc (template sinh PHPDoc)
- Class / Function / Property Template
EN/VN: Mẫu sinh phpdoc với biến snippet →
Tuỳ. Nếu team ghi chú rõ ràng, hãy tuỳ biến để chèn @param, @return, @template, v.v.
Rename
- Exclude
EN/VN: Loại các path khi rename symbol →
Giữ bỏ vendor/** (không đụng code vendor). Thêm thư mục generated nếu có. - Namespace Mode: single
EN/VN: Phạm vi đổi tên namespace →
Giữ single cho an toàn; đổi rộng khi bạn chắc chắn.
Runtime / Stubs / Telemetry / Trace
- Runtime (Node path)
EN/VN: Chọn Node runtime riêng →
Để mặc định trừ khi bạn cần bản Node cụ thể. - Stubs
EN/VN: Bộ stub cho PHP core & extensions →
Giữ mặc định, thêm stub extension bạn thực sự dùng (redis, swoole, amqp, …) để có IntelliSense. - Telemetry: Enabled
EN/VN: Gửi ẩn danh usage/crash →
Tắt nếu bạn không muốn gửi telemetry. - Trace: Server (off)
EN/VN: Log giao tiếp VSCode↔︎server →
Off thường ngày; On khi debug lỗi Intelephense. - Max Memory (0 = auto)
EN/VN: Giới hạn RAM language server →
Để 0 (auto). Nếu dự án rất lớn và bị out-of-memory, thử tăng (1024–2048).
Gợi ý cấu hình nhanh
1) Strict profile (khuyến nghị dự án mới/typed, PSR-12, ít mixed)
- Code Lens: On tất cả
- Compatibility: On tất cả
- Completion: InsertUse=On, TriggerParamHints=On, **SuggestStaticWithObject=**Off, FullyQualifyGlobal = Tuỳ (Off nếu muốn code gọn)
- Diagnostics: On tất cả, RelaxedTypeCheck=Off, NoMixedTypeCheck=Off, Run=onType (đổi onSave nếu lag)
- Environment: PHP Version = đúng thực tế, ShortOpenTag=Off, set DocumentRoot, IncludePaths nếu cần
- Files: Exclude giữ mặc định + thêm thư mục build/cache riêng, MaxSize=1,000,000
- Format: Enable=On, Braces theo PSR-12
- PhpDoc: tuỳ biến template theo chuẩn team
- Rename: Exclude vendor/, NamespaceMode=single
- Stubs: giữ mặc định, thêm extension bạn dùng
- Telemetry: Off (nếu không muốn gửi dữ liệu)
- Trace: Off (bật khi debug)
2) Legacy profile (dự án cũ, thiếu type-hints, nhiều mixed)
- Code Lens: On
- Compatibility: On
- Completion: InsertUse=On, TriggerParamHints=On, SuggestStaticWithObject=On (để “thấy hết”), FullyQualifyGlobal=Off
- Diagnostics: Enable=On, RelaxedTypeCheck=On, NoMixedTypeCheck=On, còn lại On nhưng có thể tắt Unused tạm nếu quá ồn; Run=onSave để đỡ lag
- Environment: ShortOpenTag=On (nếu code dùng short tags), PHP Version khớp prod
- Files: mở rộng Exclude để nhẹ máy (log/cache/compiled)
- Format: Enable=On nhưng khoan auto-format toàn repo (tránh diff lớn)
- PhpDoc: bật auto template để dần “gõ type” vào chú thích
- Telemetry/Trace theo nhu cầu
Ghi chú nhỏ cho team
- Nếu bạn đang chuẩn hoá dần sang typed PHP (union types, generics via PHPDoc), nên theo Strict profile để Intelephense “ép chuẩn” sớm → bug giảm rõ rệt.
- Nếu đang “gỡ nợ kỹ thuật”, bắt đầu với Legacy profile, sau đó từng bước: tắt RelaxedTypeCheck, rồi tắt NoMixedTypeCheck, thêm type hint & phpdoc, nâng PHP version target, bật format/PSR-12.