Bạn đang chạy xe bon bon trên đường, bỗng nhiên máy tắt, bạn mở nắp bình xang nhìn ngõ...rờ vào vài sợi dây điện lắc lắc...đập nhẹ vào lốc máy...Và kết quả là...vẫn không có gì thay đổi!
Có một thói quen mà gần như 100% người mới học PHP đều mắc phải.Website báo lỗi.
Hoặc...
Không báo lỗi gì cả.
😅
Thế là bắt đầu:
"Chắc MySQL lỗi..."
"Hay do session?"
"Hay hosting?"
"Hay PHP phiên bản mới?"
"Hay ChatGPT viết sai?"
...
Đoán.
Đoán.
Rồi lại đoán.
😭
Trong khi có một "vũ khí" cực kỳ đơn giản.
Có sẵn trong PHP.
Không cần cài thêm.
Không cần plugin.
Không cần framework.
Tên của nó là:
var_dump()
😎
var_dump() là gì?
var_dump() là một hàm trong PHP dùng để hiển thị giá trị, kiểu dữ liệu và thông tin chi tiết của một biến.
Nó thường được sử dụng để debug chương trình và kiểm tra dữ liệu trong quá trình lập trình.
Ví dụ đời thường 🍜
Hãy tưởng tượng.
Bạn mang xe ra tiệm sửa.
Nói với thợ:
"Xe không chạy."
😅
Người thợ không thể sửa ngay.
Họ sẽ kiểm tra:
✔ Còn xăng không?
✔ Bình ắc quy còn điện không?
✔ Bugi có đánh lửa không?
✔ Dây điện có đứt không?
Họ không...
Đoán.
Họ...
Kiểm tra.
😎
var_dump() cũng chính là hành động:
"Mở nắp ca-pô để xem bên trong đang có gì."
Ví dụ đầu tiên 😄
Bạn có đoạn code:
$name = "Nam";
echo $name;Kết quả:
NamKhông có gì đặc biệt.
Nhưng nếu dùng:
$name = "Nam";
var_dump($name);Bạn sẽ thấy:
string(3) "Nam"Không chỉ biết:
Giá trị là:
Nam
Mà còn biết:
Đây là:
string
Dài:
3 ký tự.
😎
Vì sao điều này quan trọng?
Hãy xem ví dụ.
$age = 18;
if ($age == "18") {
echo "Đúng";
}Mọi thứ vẫn chạy.
😄
Nhưng nếu bạn muốn biết:
Biến này là:
Số?
Hay chuỗi?
Lúc đó:
var_dump($age);Sẽ hiện:
int(18)Nếu là:
$age = "18";Thì:
string(2) "18"Nhìn qua.
Giống nhau.
Nhưng PHP hiểu khác nhau.
Đây là lúc var_dump() phát huy tác dụng.
print_r() và var_dump() khác nhau thế nào?
Người mới rất hay nhầm.
print_r()
↓
Hiển thị dữ liệu.
Đơn giản.
var_dump()
↓
Hiển thị:
✔ Giá trị
✔ Kiểu dữ liệu
✔ Độ dài
✔ Thông tin chi tiết hơn
Nếu chỉ muốn xem nhanh.
print_r() khá tiện.
Nếu đang debug thật.
var_dump() gần như luôn hữu ích hơn.
😎
Khi form không nhận dữ liệu 😭
Đây là tình huống rất phổ biến.
Bạn submit form.
Nhưng:
$_POST['username']lại rỗng.
😅
Thay vì đoán.
Hãy viết:
var_dump($_POST);Nếu hiện:
array(0) { }À...
Form chưa gửi.
Nếu hiện:
array(2) {
["username"]=>
string(5) "admin"
["password"]=>
string(6) "123456"
}Thì dữ liệu đã tới PHP.
Lỗi nằm ở bước sau.
Đơn giản vậy thôi.
Debug Session 😎
Có lúc.
Bạn nghĩ:
Session bị mất.
Nhưng...
Đừng nghĩ.
Hãy xem.
var_dump($_SESSION);Nếu thấy:
array(0) { }↓
Session chưa có dữ liệu.
Nếu thấy:
["user"]=>"admin"↓
Session vẫn còn.
Lỗi ở chỗ khác.
😄
Debug MySQL 😅
Ví dụ.
Bạn query database.
Không thấy dữ liệu.
Thay vì:
"Chắc MySQL lỗi."
Hãy kiểm tra.
var_dump($result);Hoặc:
var_dump(mysqli_num_rows($result));Nếu hiện:
int(0)↓
Query chạy.
Nhưng không có bản ghi nào.
Đây là hai chuyện hoàn toàn khác nhau.
Debug Array cực dễ 😎
Ví dụ.
$colors = ["Đỏ", "Xanh", "Vàng"];Nếu:
echo $colors;PHP sẽ báo lỗi hoặc hiện chữ:
Array🤡
Trong khi:
var_dump($colors);Hiện ngay:
array(3) {
...
}Biết ngay:
Có bao nhiêu phần tử.
Từng phần tử là gì.
Quá tiện.
InfinityFree Case 😅
Có bạn gửi mình đoạn code.
Đăng nhập luôn thất bại.
Bạn ấy khẳng định:
"Em nhập đúng mật khẩu."
Sau một hồi kiểm tra.
Mình bảo:
Thử thêm:
var_dump($_POST);Kết quả.
Tên ô nhập là:
user_nameNhưng PHP lại đọc:
$_POST['username']Thiếu một dấu gạch dưới.
🤡
Không phải MySQL.
Không phải Session.
Không phải Password.
Chỉ là...
Sai tên biến.
Nếu không có var_dump().
Có khi debug cả buổi vẫn chưa ra.
😅
Một hiểu lầm rất phổ biến 🤡
Nhiều người nghĩ.
var_dump() làm sửa lỗi.
Không.
Nó không sửa gì cả.
Nó chỉ...
Nói sự thật.
😄
Giống như bác sĩ.
Không chữa bệnh bằng máy chụp X-quang.
Nhưng nếu không chụp.
Rất khó biết bệnh nằm ở đâu.
Khi nào nên dùng var_dump()?
Gần như bất cứ khi nào bạn nghi ngờ dữ liệu.
Ví dụ.
✔ Form gửi gì lên?
✔ Session còn không?
✔ Cookie có giá trị gì?
✔ Query trả về cái gì?
✔ Hàm trả về true hay false?
✔ Biến này là string hay int?
Nếu chưa chắc.
↓
var_dump()
😎
Debug kiểu dev thật 😎
✅ 1. Debug từng bước
Đừng var_dump() cả 50 biến một lúc.
Hãy kiểm tra từng bước.
✅ 2. Xóa var_dump() trước khi đưa website lên thật
Đừng để người dùng thấy dữ liệu nội bộ.
✅ 3. Đọc kỹ kiểu dữ liệu
Đôi khi lỗi không nằm ở giá trị.
Mà nằm ở:
string
hay
integer.
✅ 4. Đừng đoán
Hãy kiểm chứng bằng dữ liệu.
Checklist chuẩn không cần chỉnh 😎
☑ Dùng var_dump() khi debug
☑ Kiểm tra kiểu dữ liệu
☑ Kiểm tra giá trị thật của biến
☑ Debug từng bước
☑ Xóa var_dump() trước khi deploy
☑ Không đoán khi chưa kiểm tra
FAQ nhanh
var_dump() có làm thay đổi dữ liệu không?
→ Không.
Nó chỉ hiển thị thông tin.
Có nên dùng var_dump() trên website thật?
→ Chỉ khi đang debug.
Sau đó nên xóa.
var_dump() có chậm không?
→ Không đáng kể với việc debug thông thường.
print_r() hay var_dump() tốt hơn?
→ Nếu cần nhiều thông tin hơn, var_dump() thường hữu ích hơn.
Bạn có thể cũng đang gặp 😭
👉 White Screen of Death – Trang trắng xóa không báo lỗi
👉 Fatal Error trong PHP là gì?
👉 Undefined Variable là gì?
👉 Call to undefined function là gì?
👉 PHP login đúng password nhưng vẫn fail
👉 isset() vs empty() khác nhau thế nào?
Tổng kết
Có một câu nói rất hay trong giới lập trình:
Máy tính không bao giờ nói dối.
Người lập trình mới là người hiểu sai những gì máy tính đang làm.
😄
var_dump() không phải là một hàm "cao siêu".
Nó chỉ giống như việc bật đèn trong một căn phòng tối.
Căn phòng không thay đổi.
Nhưng bạn bắt đầu nhìn thấy mọi thứ.
Và đó chính là điều quan trọng nhất khi debug.
Đừng cố đoán.
Đừng cố "cảm nhận".
Đừng sửa lung tung rồi hy vọng chương trình tự chạy.
Hãy để dữ liệu lên tiếng.
Và nếu bạn chỉ nhớ một điều từ bài này, hãy nhớ:
Lập trình viên giỏi không phải là người ít gặp lỗi.
Mà là người biết cách tìm ra lỗi nhanh nhất.
Và var_dump() chính là một trong những người bạn đầu tiên trên hành trình đó. 🚀