Trong lập trình PHP, việc hiểu rõ sự khác biệt giữa hằng số (constant) và biến (variable) là điều vô cùng quan trọng. Hai khái niệm này không chỉ khác nhau về cách định nghĩa mà còn về cách sử dụng trong quá trình phát triển ứng dụng. Trong bài viết này, chúng ta sẽ khám phá kỹ lưỡng về hằng và biến, đồng thời tìm hiểu xem liệu có xảy ra lỗi khi định nghĩa một hằng số nhiều lần hay không.

1. Hằng số (Constant) là gì?

Hằng số trong PHP là một giá trị không thay đổi trong suốt quá trình thực thi của chương trình. Một khi đã được định nghĩa, bạn không thể thay đổi giá trị của hằng số đó. Hằng số thường được sử dụng cho những giá trị cố định mà bạn biết chắc chắn rằng chúng sẽ không thay đổi, như tên miền của một website, số Pi, hoặc một số hằng số khác trong ứng dụng.

Cách khai báo hằng số

Để định nghĩa một hằng số trong PHP, bạn sử dụng hàm define(). Cú pháp như sau:

define('TÊN_HẰNG', GIÁ_TRỊ);

Ví dụ, nếu bạn muốn định nghĩa tên của một website, bạn có thể làm như sau:

define('SITE_NAME', 'My Awesome Website');

Sau khi khai báo, bạn có thể sử dụng hằng số SITE_NAME ở bất kỳ đâu trong mã của bạn.

2. Biến (Variable) là gì?

Biến trong PHP là một vùng nhớ mà bạn có thể lưu trữ và thay đổi giá trị bất kỳ lúc nào. Biến rất linh hoạt và thường được sử dụng để lưu trữ thông tin có thể thay đổi trong suốt chương trình, như tên người dùng, điểm số, hoặc các thông tin khác mà người dùng nhập vào.

Cách khai báo biến

Để định nghĩa một biến trong PHP, bạn sử dụng dấu $ theo sau là tên biến:

$ten_bien = 'Giá trị của biến';

Ví dụ, bạn có thể định nghĩa một biến để lưu trữ tên người dùng như sau:

$username = 'JohnDoe';

Biến có thể thay đổi giá trị của nó trong suốt quá trình thực thi chương trình. Bạn có thể gán lại giá trị cho biến bằng cách thực hiện như sau:

$username = 'JaneDoe'; // Thay đổi giá trị của biến

3. Sự khác biệt giữa hằng và biến

3.1 Tính chất thay đổi

Điều quan trọng nhất mà bạn cần nhớ là hằng số không thể thay đổi sau khi được định nghĩa. Còn biến có thể thay đổi giá trị nhiều lần trong suốt vòng đời của chương trình.

3.2 Phạm vi sử dụng

Hằng số có phạm vi toàn cục, có nghĩa là bạn có thể sử dụng hằng số ở bất kỳ đâu trong mã của bạn. Ngược lại, biến có thể có phạm vi cục bộ (trong một hàm) hoặc phạm vi toàn cục. Nếu bạn muốn sử dụng một biến toàn cục bên trong một hàm, bạn cần khai báo biến đó là global.

3.3 Quy tắc đặt tên

  • Hằng số thường được viết hoa toàn bộ và sử dụng dấu gạch dưới để phân tách các từ, ví dụ như MAX_VALUE, DEFAULT_LANGUAGE.
  • Biến có thể được đặt tên bằng cách sử dụng bất kỳ kiểu chữ nào, nhưng thường thì biến được viết bằng chữ thường hoặc chữ cái đầu tiên của mỗi từ viết hoa, ví dụ như $userName, $maxValue.

4. Định nghĩa hằng số hai lần có gây lỗi không?

Khi bạn cố gắng định nghĩa cùng một hằng số nhiều lần trong cùng một phạm vi, PHP sẽ trả về một cảnh báo nhưng không gây lỗi. Điều này có nghĩa là chương trình vẫn sẽ tiếp tục chạy, nhưng bạn sẽ nhận được thông báo rằng hằng số đã được định nghĩa trước đó.

Ví dụ:

define('SITE_NAME', 'My Awesome Website'); // Định nghĩa hằng số lần 1
define('SITE_NAME', 'Another Website'); // Định nghĩa hằng số lần 2, sẽ gây ra cảnh báo

Khi đoạn mã trên được thực thi, bạn sẽ thấy một cảnh báo như sau:

Warning: Constant SITE_NAME already defined in …

5. Tóm tắt

Tóm lại, hằng số và biến đều đóng vai trò quan trọng trong lập trình PHP. Hằng số được sử dụng cho các giá trị không thay đổi, trong khi biến được sử dụng cho các giá trị có thể thay đổi. Việc hiểu rõ sự khác biệt giữa chúng sẽ giúp bạn viết mã hiệu quả hơn và tránh được những lỗi không đáng có trong quá trình phát triển ứng dụng.