PHP - Khai báo kiểu Scalar

Xin chào các bạn lập trình viên đang theo đuổi! Hôm nay, chúng ta sẽ bắt đầu một hành trình thú vị vào thế giới của PHP, đặc biệt tập trung vào Khai báo kiểu Scalar. Đừng lo lắng nếu những từ này听起来 như là những từ ngữ không rõ ràng - đến cuối bài hướng dẫn này, bạn sẽ sử dụng những thuật ngữ này như một nhà phát triển có kinh nghiệm!

PHP - Scalar Type Declarations

Khai báo kiểu Scalar là gì?

Trước khi chúng ta đi sâu vào, hãy phân tích xem "Khai báo kiểu Scalar" thực sự có nghĩa là gì. Trong lập trình, một "scalar" là một giá trị đơn, như một số hoặc một chuỗi văn bản. "Khai báo kiểu" là một cách nói hoa mỹ để nói rằng chúng ta đang告诉 PHP loại dữ liệu mà chúng ta mong đợi một hàm nhận hoặc trả về.

Hãy tưởng tượng bạn đang kinh doanh một quầy bán nước chanh. Bạn wouldn't muốn ai đó đưa cho bạn một quả bóng khi bạn yêu cầu chanh, phải không? Đó chính xác là điều mà khai báo kiểu làm - nó đảm bảo rằng mã của bạn nhận được đúng loại dữ liệu để làm việc.

Khai báo kiểu Scalar trong PHP 7

PHP 7 đã giới thiệu một tính năng thay đổi游戏的规则: khả năng khai báo các kiểu scalar cho các tham số và giá trị trả về của hàm. Điều này rất quan trọng vì nó giúp phát hiện lỗi sớm và làm cho mã trở nên đáng tin cậy hơn.

Hãy xem một ví dụ đơn giản:

function addNumbers(int $a, int $b): int {
return $a + $b;
}

echo addNumbers(5, 10); // Output: 15

Trong đoạn mã này:

  • int $a, int $b: Chúng ta đang nói rằng cả $a$b đều phải là các số nguyên.
  • : int: Phần này sau hàm khai báo rằng hàm sẽ trả về một số nguyên.

Bây giờ, hãy thử một điều gì đó xấu:

echo addNumbers("5", "10");

Ngạc nhiên! Điều này vẫn hoạt động và đầu ra là 15. Nhưng tại sao? Chào mừng bạn đến với thế giới của...

Chế độ Ép kiểu

Mặc định, PHP 7 hoạt động trong chế độ mà chúng ta gọi là "ép kiểu". Nó giống như có một người bạn rất thông cảm, cố gắng hiểu những gì bạn đang nói, ngay cả khi bạn không hoàn toàn rõ ràng.

Trong chế độ ép kiểu, PHP sẽ cố gắng chuyển đổi (hoặc "ép") các giá trị sang kiểu đã khai báo nếu có thể. Vì vậy, khi chúng ta truyền "5" và "10" dưới dạng chuỗi, PHP nói, "Tôi hiểu bạn muốn làm gì," và chuyển đổi chúng thành các số nguyên.

Dưới đây là bảng một số ép kiểu phổ biến:

Input Declared Type Result
"42" int 42
"3.14" float 3.14
1 string "1"
true int 1

Nhưng nếu chúng ta muốn PHP nghiêm ngặt hơn? Đến với...

Chế độ Nghiêm ngặt

Chế độ nghiêm ngặt giống như có một giáo viên đòi hỏi câu trả lời chính xác. Để bật chế độ nghiêm ngặt, thêm dòng này ở đỉnh của tệp PHP của bạn:

declare(strict_types=1);

Bây giờ, hãy thử ví dụ xấu của chúng ta một lần nữa:

declare(strict_types=1);

function addNumbers(int $a, int $b): int {
return $a + $b;
}

echo addNumbers("5", "10");

Bum! Điều này bây giờ sẽ ném ra một TypeError. PHP đang nói, "Tôi đã yêu cầu các số nguyên, và bạn đã đưa cho tôi các chuỗi. Tôi không vui về điều này."

Tại sao sử dụng khai báo kiểu Scalar?

  1. Mã rõ ràng hơn: Nó giống như để lại một lời nhắc cho tương lai bạn (hoặc các nhà phát triển khác). "Hey, hàm này mong đợi các số!"

  2. Phát hiện lỗi sớm: Thay vì các kết quả kỳ lạ, bạn nhận được lỗi chỉ rõ trực tiếp đến vấn đề.

  3. Hiệu suất tốt hơn: PHP có thể tối ưu mã tốt hơn khi biết chính xác các kiểu nào để mong đợi.

Một ví dụ thực tế

Giả sử bạn đang xây dựng một ứng dụng máy tính đơn giản. Dưới đây là cách bạn có thể sử dụng khai báo kiểu scalar:

declare(strict_types=1);

class Calculator {
public function add(float $a, float $b): float {
return $a + $b;
}

public function subtract(float $a, float $b): float {
return $a - $b;
}

public function multiply(float $a, float $b): float {
return $a * $b;
}

public function divide(float $a, float $b): float {
if ($b == 0) {
throw new Exception("Cannot divide by zero!");
}
return $a / $b;
}
}

$calc = new Calculator();

echo $calc->add(5.5, 4.5);      // Output: 10
echo $calc->subtract(10, 3);    // Output: 7
echo $calc->multiply(3, 4);     // Output: 12
echo $calc->divide(10, 2);      // Output: 5

// Điều này sẽ ném ra một lỗi trong chế độ nghiêm ngặt
// echo $calc->add("5", "10");

Trong ví dụ này, chúng ta đã tạo một lớp Calculator với các phương thức đều sử dụng khai báo kiểu float. Điều này đảm bảo rằng tất cả các phép toán của chúng ta đang hoạt động với các số, ngăn chặn bất kỳ sự nối chuỗi ngẫu nhiên hoặc các lỗi liên quan đến kiểu khác.

Kết luận

Khai báo kiểu scalar trong PHP giống như các rào cản trên một con đường núi. Nó giúp giữ cho mã của bạn trên đúng hướng và dễ dàng phát hiện khi có điều gì đó sai lệch. Mặc dù chúng có thể看起来有点麻烦 ban đầu, nhưng tin tôi đi - tương lai bạn sẽ cảm ơn sự rõ ràng và an toàn mà chúng mang lại.

Nhớ rằng, lập trình là tất cả về giao tiếp rõ ràng - không chỉ với máy tính, mà còn với các nhà phát triển khác (bao gồm cả tương lai bạn!). Khai báo kiểu là một công cụ khác trong bộ công cụ của bạn để viết mã rõ ràng, an toàn và hiệu quả hơn.

Bây giờ, hãy tiếp tục và khai báo các kiểu của bạn! Mã của bạn sẽ cảm ơn bạn, và các nhà phát triển đồng nghiệp của bạn cũng vậy. Chúc các bạn lập trình vui vẻ!

Credits: Image by storyset