Máy bay thật là một phương tiện tuyệt vời, chỉ với thời gian khoảng 1 tiếng 15 phút là từ Đà Nẵng bạn đã có mặt tại Hà Nội. Bạn nghĩ "từ giờ trở đi, đi đâu cũng máy bay hết"...Bạn sẽ đi máy bay từ Đà Nãng đi Hội An để ăn cao lầu?
Sau bài trước về var_dump(), có lẽ bạn sẽ nghĩ:"Thế thì cứ var_dump() mọi chỗ là xong?"
😄
Không hẳn.
Có rất nhiều tình huống.
Bạn không cần xem:
Kiểu dữ liệu.
Độ dài.
Array.
Object.
...
Bạn chỉ muốn biết một điều cực kỳ đơn giản.
Code đã chạy tới đây chưa?
😎
Đó là lúc:
echo
trở thành một "thám tử" cực kỳ lợi hại.
echo debug là gì?
Echo debug là kỹ thuật chèn các câu lệnh echo vào nhiều vị trí trong chương trình để theo dõi luồng thực thi (Program Flow) và xác định chính xác đoạn code đang gặp lỗi.
Đây là một trong những cách debug đơn giản nhưng hiệu quả nhất đối với người mới học PHP.
Ví dụ đời thường 🚗
Bạn đi từ Đà Nẵng ra Huế.
Giữa đường.
Xe chết máy.
😅
Có hai cách.
Cách thứ nhất.
Đứng đó.
Đoán.
"Chắc hết xăng."
"Chắc hỏng máy."
"Chắc bình yếu."
😭
Cách thứ hai.
Kiểm tra từng chặng.
✔ Xe còn nổ máy không?
✔ Đèn còn sáng không?
✔ Có đề được không?
✔ Có xăng không?
↓
Bạn sẽ nhanh biết nguyên nhân hơn.
Debug cũng vậy.
Đừng nhìn cả chương trình.
Hãy kiểm tra từng đoạn.
Ví dụ đơn giản 😄
Bạn có:
echo "Bước 1";
$a = 5;
echo "Bước 2";
$b = 10;
echo "Bước 3";
echo $a + $b;Website hiện:
Bước 1
Bước 2
Bước 3
15↓
Code chạy bình thường.
😎
Nhưng nếu...
echo "Bước 1";
include "config.php";
echo "Bước 2";Website chỉ hiện:
Bước 1Rồi trắng luôn.
🤡
Điều đó có nghĩa.
Code chưa bao giờ chạy tới:
"Bước 2"
↓
Lỗi nằm ở:
include "config.php";Quá dễ thấy.
😄
Đừng echo mỗi số 😅
Nhiều bạn debug kiểu:
echo 1;
echo 2;
echo 3;Chạy xong.
Website hiện:
123🤡
Một lúc sau.
Không nhớ:
1 là gì.
2 là gì.
3 là gì.
Hãy viết rõ hơn.
echo "Đã kết nối database";
echo "Đã lấy dữ liệu";
echo "Đang hiển thị kết quả";Nhìn phát.
Hiểu ngay.
Debug giống như đi tìm kho báu 🗺️
Hãy tưởng tượng.
Bạn có bản đồ.
Có:
10 điểm.
Nếu biết.
Đã đi qua:
Điểm 1
Điểm 2
Điểm 3
Nhưng chưa tới:
Điểm 4
↓
Kho báu nằm giữa:
3
và
😎
Debug bằng echo
cũng hoạt động y như vậy.
Chia chương trình thành nhiều chặng
Đừng viết:
500 dòng.
Không debug.
😅
Hãy chia.
Bắt đầu chương trình
↓
Kết nối database
↓
Nhận dữ liệu từ form
↓
Kiểm tra dữ liệu
↓
Query MySQL
↓
Hiển thị kết quảSau mỗi bước.
echo
một lần.
Lỗi sẽ lộ ra rất nhanh.
InfinityFree Case 😅
Có bạn gửi mình một file PHP.
Khoảng:
700 dòng.
Website trắng.
Không lỗi.
Không thông báo.
Bạn ấy hỏi:
"Em phải làm sao?"
Mình chỉ bảo.
Thêm:
echo "A";ở đầu file.
Rồi:
echo "B";ở giữa.
Tiếp tục:
echo "C";Gần cuối.
Kết quả.
Website hiện:
ABKhông có:
C↓
Lỗi nằm đâu?
Giữa:
B
và
C.
700 dòng.
Thu hẹp còn khoảng:
30 dòng.
😎
Đó mới là sức mạnh của echo debug.
Echo + var_dump = Bộ đôi hoàn hảo 🤝
Ví dụ.
echo "Đã nhận dữ liệu";
var_dump($_POST);
echo "Chuẩn bị query";Nếu website hiện:
Đã nhận dữ liệu
array(2)...
Chuẩn bị query↓
Form ổn.
Lỗi nằm sau đó.
Nếu chỉ hiện:
Đã nhận dữ liệu↓
Có thể var_dump() hoặc đoạn kế tiếp gặp vấn đề.
Hai công cụ này luôn hỗ trợ nhau.
Một hiểu lầm rất phổ biến 🤡
Nhiều người nghĩ.
Debug là phải dùng:
Visual Studio Code.
Xdebug.
Debugger.
Breakpoint.
...
Không sai.
Nhưng.
Đối với người mới.
Biết dùng:
echo
và
var_dump()
đúng cách.
Đã giải quyết được rất nhiều lỗi rồi.
😄
Khi nào nên dùng echo?
Khi bạn muốn biết:
✔ Code đã chạy tới đây chưa?
✔ Hàm này có được gọi không?
✔ Điều kiện if có đúng không?
✔ Vòng lặp chạy bao nhiêu lần?
✔ Chương trình dừng ở bước nào?
Nếu câu trả lời là:
"Có."
↓
echo
là lựa chọn rất nhanh.
Một mẹo cực hay 😎
Thay vì:
echo "A";Hãy thử:
echo "<h3>Đã vào bước kiểm tra đăng nhập</h3>";Hoặc:
echo "<div style='color:red'>
Đang query database...
</div>";Website sẽ dễ đọc hơn rất nhiều.
Khi sửa xong.
Chỉ cần xóa các dòng debug đi.
Debug kiểu dev thật 😎
✅ 1. Soi từng bước
Đừng nhảy cóc.
Đi từ đầu tới cuối.
✅ 2. Viết thông báo dễ hiểu
Đừng dùng:
A
B
C
Nếu vài tiếng sau quay lại.
Bạn sẽ chẳng nhớ gì.
😅
✅ 3. Kết hợp với var_dump()
Echo cho biết:
Đang ở đâu.
Var_dump cho biết:
Đang có dữ liệu gì.
✅ 4. Xóa echo debug trước khi deploy
Đừng để khách hàng thấy:
Đang query database...🤡
Checklist chuẩn không cần chỉnh 😎
☑ Dùng echo để kiểm tra luồng chạy
☑ Chia chương trình thành nhiều bước
☑ Viết thông báo rõ ràng
☑ Kết hợp với var_dump()
☑ Thu hẹp phạm vi lỗi
☑ Xóa echo debug sau khi sửa xong
FAQ nhanh
echo có làm chậm chương trình không?
→ Không đáng kể khi dùng để debug.
Có nên để echo trên website thật?
→ Không.
Sau khi sửa lỗi xong nên xóa.
echo và var_dump nên dùng cái nào?
→ Không có cái nào tốt hơn.
Chúng phục vụ hai mục đích khác nhau.
echo có thay thế debugger chuyên nghiệp được không?
→ Không hoàn toàn.
Nhưng với người mới học PHP, echo là công cụ cực kỳ hiệu quả.
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ì?
👉 Parse Error là gì?
👉 Undefined Variable là gì?
👉 Call to undefined function là gì?
👉 PHP login đúng password nhưng vẫn fail
👉 Vì sao $_POST bị rỗng?
👉 isset() vs empty() khác nhau thế nào?
👉 var_dump() là "vũ khí bí mật" của newbie
Tổng kết
Có một câu nói vui trong giới lập trình:
Nếu không biết chương trình đang chạy tới đâu...
Thì hãy hỏi chính chương trình.
😄
echo không phải là công cụ phức tạp.
Nó chỉ giống như việc bạn cắm những chiếc cột mốc trên một con đường dài.
Đi tới đâu.
Đánh dấu tới đó.
Khi chương trình dừng lại.
Bạn sẽ biết ngay:
"Nó đã đi được đến đâu."
Đó cũng chính là tư duy debug.
Không đoán.
Không sửa bừa.
Không cầu may.
Mà từng bước.
Từng bước.
Thu hẹp phạm vi.
Cho đến khi tìm được đúng dòng code gây lỗi.
Và nếu bạn chỉ nhớ một điều từ bài này, hãy nhớ:
Debug giỏi không phải vì bạn biết nhiều lệnh.
Mà vì bạn biết cách chia một vấn đề lớn thành những bước nhỏ để kiểm tra.
Đó là "nghệ thuật soi từng bước" mà gần như lập trình viên nào cũng sử dụng hằng ngày. 🚀