Lịch sử PHP
Xin chào các bạn đang theo đuổi lập trình! Hôm nay, chúng ta sẽ cùng nhau đi qua một hành trình thú vị trong lịch sử của PHP, một trong những ngôn ngữ lập trình server-side phổ biến nhất. Với vai trò là giáo viên khoa học máy tính gần gũi của bạn, tôi rất vui mừng được hướng dẫn các bạn trong chuyến phiêu lưu này. Vậy, hãy mở máy thời gian ảo của mình và cùng tôi lặn sâu vào!
Sự ra đời của PHP
PHP, ban đầu có nghĩa là "Personal Home Page," được tạo ra bởi Rasmus Lerdorf vào năm 1994. Hãy tưởng tượng một thế giới mà internet vẫn còn trong giai đoạn sơ khai, và Lerdorf chỉ đơn giản là muốn theo dõi ai đang xem hồ sơ trực tuyến của mình. Ông có thể không biết rằng sáng tạo đơn giản của mình sẽ phát triển thành một lực lượng mạnh mẽ trong phát triển web!
PHP/FI
Vào năm 1995, Lerdorf đã phát hành mã nguồn cho PHP Tools, sau đó được gọi là PHP/FI (Personal Home Page / Forms Interpreter). Phiên bản này cho phép các nhà phát triển chèn các truy vấn SQL vào các trang HTML. Đó giống như ban tặng siêu năng lực cho các trang web tĩnh!
PHP 3
Nhảy tới năm 1998, PHP 3 xuất hiện. Đây là một phiên bản viết lại hoàn toàn ngôn ngữ bởi Andi Gutmans và Zeev Suraski. Họ đã biến PHP thành một ngôn ngữ mạnh mẽ hơn, có thể cạnh tranh với ASP của Microsoft. Trong thời gian này, ý nghĩa của PHP đã thay đổi thành từ viết tắt_recursive "PHP: Hypertext Preprocessor."
PHP 4
Vào năm 2000, PHP 4 được phát hành, mang theo nhiều tính năng mới và cải tiến. Một trong những bổ sung quan trọng nhất là Zend Engine, giúp cải thiện mạnh mẽ hiệu suất của PHP. Đó giống như việc nâng cấp từ xe đạp lên ô tô thể thao!
PHP 5
PHP 5, phát hành vào năm 2004, là một bước đột phá. Nó giới thiệu các tính năng lập trình hướng đối tượng (OOP), giúp PHP trở thành một đối thủ serious trong thế giới phát triển web. Hãy cùng nhìn vào một ví dụ đơn giản về OOP trong PHP 5:
<?php
class Car {
public $color;
public function __construct($color) {
$this->color = $color;
}
public function getColor() {
return $this->color;
}
}
$myCar = new Car("red");
echo "My car is " . $myCar->getColor();
?>
Trong ví dụ này, chúng ta định nghĩa một lớp Car
với thuộc tính color
và các phương thức để đặt và lấy màu sắc. Sau đó, chúng ta tạo một đối tượng Car
và in màu sắc của nó. Cách tiếp cận hướng đối tượng này giúp mã của chúng ta trở nên có tổ chức và dễ tái sử dụng hơn.
PHP 6
Bây giờ, hãy xem một chút thông tin thú vị về PHP: PHP 6 chưa bao giờ được ra mắt! Nó được lên kế hoạch để bao gồm hỗ trợ Unicode bản địa, nhưng do nhiều vấn đề phức tạp, dự án đã bị hủy bỏ. Thay vào đó, nhiều tính năng của nó đã được tích hợp vào PHP 5.3 và các phiên bản sau.
PHP 7
PHP 7, phát hành vào năm 2015, là một mốc quan trọng. Nó mang lại những cải tiến lớn về hiệu suất và các tính năng mới. Một trong những bổ sung quan trọng là toán tử con thoi (<=>
) để so sánh giá trị. Dưới đây là cách nó hoạt động:
<?php
// Ví dụ toán tử con thoi
$a = 5;
$b = 10;
$result = $a <=> $b;
if ($result === -1) {
echo "$a is less than $b";
} elseif ($result === 0) {
echo "$a is equal to $b";
} else {
echo "$a is greater than $b";
}
?>
Toán tử này trả về -1 nếu toán tử bên trái nhỏ hơn bên phải, 0 nếu chúng bằng nhau, và 1 nếu toán tử bên trái lớn hơn. Đó giống như có một con tàu nhỏ điều hướng giữa các giá trị!
Các tính năng mới trong PHP 8
Và bây giờ, chúng ta đến với thời điểm hiện tại với PHP 8, phát hành vào năm 2020. Phiên bản này đã giới thiệu một số tính năng thú vị giúp PHP trở nên mạnh mẽ và thân thiện với nhà phát triển hơn.
Trình biên dịch JIT
Một trong những bổ sung quan trọng nhất trong PHP 8 là Trình biên dịch JIT (Just-In-Time). Hãy tưởng tượng nó như một turbocharger cho mã PHP của bạn, giúp nó chạy nhanh hơn bao giờ hết!
Kiểu union
PHP 8 đã giới thiệu kiểu union, cho phép các nhà phát triển chỉ định nhiều kiểu khả thi cho một tham số hoặc giá trị trả về duy nhất. Dưới đây là một ví dụ:
<?php
function processInput(int|float $number): int|float {
if ($number > 100) {
return $number * 2;
}
return $number;
}
echo processInput(50); // Xuất: 50
echo processInput(150.5); // Xuất: 301
?>
Trong ví dụ này, hàm processInput
có thể chấp nhận hoặc là số nguyên hoặc là số float, và nó cũng có thể trả về một trong hai kiểu đó. Sự linh hoạt này giúp mã của chúng ta trở nên biểu cảm và an toàn về kiểu hơn.
Tham số có tên
Tham số có tên là một tính năng tuyệt vời khác trong PHP 8. Nó cho phép bạn chỉ định giá trị cho tham số theo tên, giúp mã của bạn dễ đọc và linh hoạt hơn. Dưới đây là một ví dụ:
<?php
function createUser($name, $email, $age = null) {
echo "Name: $name, Email: $email, Age: $age";
}
createUser(name: "John Doe", email: "[email protected]", age: 30);
createUser(email: "[email protected]", name: "Jane Smith");
?>
Trong ví dụ này, chúng ta có thể gọi hàm createUser
với các tham số có tên theo bất kỳ thứ tự nào, và chúng ta thậm chí có thể bỏ qua các tham số tùy chọn.
Thay đổi và bổ sung kiểu trong PHP 8
PHP 8 cũng mang lại một số thay đổi và bổ sung quan trọng cho hệ thống kiểu.
Kiểu mixed
Kiểu mixed
được giới thiệu để chỉ ra rằng một tham số hoặc giá trị trả về có thể là bất kỳ kiểu nào. Nó giống như một wildcard cho các kiểu!
<?php
function processAnything(mixed $data): mixed {
if (is_string($data)) {
return strtoupper($data);
} elseif (is_int($data)) {
return $data * 2;
}
return $data;
}
echo processAnything("hello"); // Xuất: HELLO
echo processAnything(5); // Xuất: 10
?>
Kiểm tra kiểu严格
PHP 8 cũng giới thiệu kiểm tra kiểu严格. Ví dụ, việc truyền null
vào một hàm mong đợi một kiểu cụ thể sẽ bây giờ gây ra lỗi trừ khi tham số được đánh dấu rõ ràng là có thể là null
.
<?php
function greet(string $name) {
echo "Hello, $name!";
}
greet("John"); // Chạy tốt
greet(null); // Bắt lỗi TypeError
function greetNullable(?string $name) {
echo "Hello, " . ($name ?? "stranger") . "!";
}
greetNullable("Jane"); // Chạy tốt
greetNullable(null); // Cũng chạy tốt, xuất: Hello, stranger!
?>
Trong ví dụ này, hàm greet
đầu tiên sẽ gây ra lỗi nếu truyền null
, trong khi hàm greetNullable
chấp nhận các giá trị null
.
Tóm lại tất cả các phương pháp chúng ta đã thảo luận, dưới đây là bảng tóm tắt:
Phiên bản PHP | Tính năng chính |
---|---|
PHP/FI | SQL trong HTML |
PHP 3 | Viết lại hoàn toàn, tên mới |
PHP 4 | Zend Engine |
PHP 5 | Lập trình hướng đối tượng |
PHP 7 | Cải thiện hiệu suất, toán tử con thoi |
PHP 8 | Trình biên dịch JIT, kiểu union, tham số có tên |
Và thế là chúng ta đã đi qua lịch sử của PHP, từ những bước đầu tiên đến hình thức mạnh mẽ hiện tại. Hãy nhớ rằng mỗi dòng mã bạn viết là một phần của câu chuyện này. Vậy, hãy tiến lên, lập trình dũng cảm, và chúc may mắn cho những cuộc phiêu lưu PHP của bạn!
Credits: Image by storyset