PHP - Các phần mở rộng và SAPI bị loại bỏ

Xin chào các bạn đang học lập trình PHP! Tôi rất vui được hướng dẫn các bạn qua một khía cạnh quan trọng của sự phát triển PHP: các phần mở rộng và SAPI bị loại bỏ. Là một giáo viên máy tính thân thiện với nhiều năm kinh nghiệm, tôi sẽ giải thích điều này một cách đơn giản để ngay cả những người không có nền tảng lập trình cũng có thể hiểu. Vậy, hãy lấy một tách cà phê (hoặc trà, nếu bạn thích), và chúng ta cùng bắt đầu!

PHP - Removed Extensions & SAPIs

Các phần mở rộng bị loại bỏ

Các phần mở rộng trong PHP giống như các add-on cung cấp thêm tính năng cho ngôn ngữ. Qua thời gian, một số phần mở rộng trở nên lỗi thời hoặc không cần thiết, và PHP quyết định loại bỏ chúng. Hãy cùng nhìn vào một số phần mở rộng bị loại bỏ đáng chú ý và hiểu tại sao chúng bị loại bỏ.

1. mysql

Phần mở rộng mysql là một trong những phần mở rộng được sử dụng rộng rãi trong các phiên bản早期的 PHP. Nó cho phép các nhà phát triển tương tác với cơ sở dữ liệu MySQL. Tuy nhiên, nó đã bị loại bỏ trong PHP 7.0 do các vấn đề an ninh và thiết kế lỗi thời.

Dưới đây là một ví dụ về cách chúng ta từng kết nối với cơ sở dữ liệu MySQL bằng phần mở rộng này:

<?php
$connection = mysql_connect("localhost", "username", "password");
mysql_select_db("my_database", $connection);
$result = mysql_query("SELECT * FROM users");
while ($row = mysql_fetch_assoc($result)) {
echo $row['name'] . "<br>";
}
mysql_close($connection);
?>

Mã này sẽ kết nối với cơ sở dữ liệu, thực hiện một truy vấn để chọn tất cả người dùng, và in tên của họ. Đơn giản, phải không? Nhưng nó có các lỗ hổng an ninh và không hỗ trợ các tính năng mới của MySQL.

2. ereg

Phần mở rộng ereg cung cấp các hàm biểu thức chính quy. Nó bị loại bỏ trong PHP 7.0 vì nó chậm hơn và ít tính năng hơn so với phần mở rộng PCRE (Perl Compatible Regular Expressions).

Dưới đây là một ví dụ về cách chúng ta từng sử dụng ereg:

<?php
if (ereg("^[a-zA-Z0-9]+$", $username)) {
echo "Valid username";
} else {
echo "Invalid username";
}
?>

Mã này sẽ kiểm tra xem tên người dùng có chứa chỉ các ký tự chữ và số hay không. Mặc dù nó hoạt động,但它 không hiệu quả hoặc mạnh mẽ như phần mở rộng PCRE.

3. mssql

Phần mở rộng mssql được sử dụng để kết nối với cơ sở dữ liệu Microsoft SQL Server. Nó bị loại bỏ trong PHP 7.0 thay vì phần mở rộng hiện đại và mạnh mẽ hơn sqlsrv.

Dưới đây là một ví dụ đơn giản về cách chúng ta từng kết nối với cơ sở dữ liệu MSSQL:

<?php
$connection = mssql_connect("localhost", "username", "password");
mssql_select_db("my_database", $connection);
$result = mssql_query("SELECT * FROM products");
while ($row = mssql_fetch_array($result)) {
echo $row['product_name'] . "<br>";
}
mssql_close($connection);
?>

Mã này sẽ kết nối với cơ sở dữ liệu MSSQL, lấy tất cả các sản phẩm, và hiển thị tên của chúng.

Bảng tóm tắt các phần mở rộng bị loại bỏ

Dưới đây là bảng tóm tắt một số phần mở rộng chính đã bị loại bỏ khỏi PHP:

Phần mở rộng Bị loại bỏ trong Thay thế bằng
mysql PHP 7.0 mysqli hoặc PDO_MySQL
ereg PHP 7.0 PCRE (preg_* functions)
mssql PHP 7.0 sqlsrv hoặc PDO_SQLSRV
mcrypt PHP 7.2 OpenSSL
recode PHP 7.4 iconv hoặc mbstring

Các SAPI bị loại bỏ

SAPI代表Server Application Programming Interface. Đây là lớp giữa PHP và máy chủ web. Qua thời gian, một số SAPI đã bị loại bỏ khỏi PHP. Hãy cùng nhìn vào một số ví dụ.

1. php-fpm (FastCGI Process Manager)

Đùa而已! php-fpm hasn't been removed. Thực tế, nó là một trong những SAPI phổ biến nhất cho PHP. Tôi muốn bắt đầu với một小游戏 để giữ cho bạn cảnh giác. Luôn luôn cảnh giác trong thế giới lập trình!

2. apache_hooks

SAPI apache_hooks bị loại bỏ trong PHP 7.0. Đây là một module thay thế Apache 1.x sử dụng Apache's hook API. Tuy nhiên, nó trở nên lỗi thời khi Apache 2.x trở thành tiêu chuẩn.

Dưới đây là một ví dụ đơn giản về cách bạn có thể thấy PHP được sử dụng với Apache trong quá khứ:

<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/html
<Directory /var/www/html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>

Cấu hình Apache này sẽ thiết lập một máy chủ ảo cho một ứng dụng PHP. Mặc dù cấu hình này không cụ thể cho apache_hooks, nó cho bạn một ý tưởng về cách PHP và Apache làm việc cùng nhau.

3. aolserver

SAPI aolserver bị loại bỏ trong PHP 5.3. Nó được sử dụng để tích hợp PHP với máy chủ web AOLserver, không còn được sử dụng rộng rãi nữa.

Bảng tóm tắt các SAPI bị loại bỏ

Dưới đây là bảng tóm tắt các SAPI chính đã bị loại bỏ khỏi PHP:

SAPI Bị loại bỏ trong Ghi chú
apache_hooks PHP 7.0 Module lỗi thời Apache 1.x
aolserver PHP 5.3 Cho tích hợp với AOLserver
caudium PHP 7.0 Cho máy chủ web Caudium
continuity PHP 7.0 Cho máy chủ Continuity

Tóm lại, sự phát triển của PHP không chỉ liên quan đến việc thêm mới các tính năng, mà còn loại bỏ các tính năng lỗi thời hoặc có vấn đề. Là một nhà phát triển, rất quan trọng để bạn luôn cập nhật các thay đổi để mã của bạn vẫn hiệu quả, an toàn và tương thích với các phiên bản PHP mới nhất.

Nhớ rằng, trong thế giới lập trình, thay đổi là điều duy nhất không thay đổi. Hãy đón nhận nó, học hỏi từ nó, và bạn sẽ phát triển như một nhà phát triển. Chúc bạn lập trình vui vẻ, và các cuộc phiêu lưu PHP của bạn không có lỗi và hạnh phúc!

Credits: Image by storyset