PHP – Удаленные расширения и SAPI

Здравствуйте, начинающие разработчики PHP! Я рад помочь вам понять важный аспект эволюции PHP: удаленные расширения и SAPI. Как ваш доброжелательный сосед-преподаватель компьютерных наук с многолетним опытом, я объясню это так, чтобы даже те, кто не имеет опыта программирования, могли понять. Так что возьмите杯咖啡(или чай, если предпочитаете), и погружаемся в это!

PHP - Removed Extensions & SAPIs

Удаленные расширения

Расширения в PHP похожи на дополнения, которые добавляют额外的 функциональность языку. Со временем некоторые из этих расширений становятся устаревшими или ненужными, и PHP решает их удалить. Давайте рассмотрим некоторые из самых заметных удаленных расширений и поймем, почему им закрыли дверь.

1. mysql

Расширение mysql было одним из самых widely используемых расширений в ранних версиях PHP. Оно позволяло разработчикам взаимодействовать с базами данных MySQL. Однако его удалили в PHP 7.0 из-за проблем с безопасностью и устаревшим дизайном.

Вот пример того, как мы раньше подключались к базе данных MySQL с помощью этого расширения:

<?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);
?>

Этот код будет подключаться к базе данных, выполнять запрос для выбора всех пользователей и выводить их имена. Просто, правда? Но у него были проблемы с безопасностью и не поддерживались новые функции MySQL.

2. ereg

Расширение ereg предоставляло функции регулярных выражений. Его удалили в PHP 7.0,因为它 было медленнее и менее функционально по сравнению с расширением PCRE (Perl Compatible Regular Expressions).

Вот пример того, как мы раньше использовали ereg:

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

Этот код будет проверять, содержит ли имя пользователя только алфавитно-цифровые символы. Хотя он работал, он не был tão эффективен или мощен, как его аналог PCRE.

3. mssql

Расширение mssql использовалось для подключения к базам данных Microsoft SQL Server. Его удалили в PHP 7.0 в пользу более современного и функционального расширения sqlsrv.

Вот простой пример того, как мы раньше подключались к базе данных 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);
?>

Этот код будет подключаться к базе данных MSSQL, извлекать все продукты и отображать их имена.

Таблица удаленных расширений

Вот таблица, резюмирующая некоторые из ключевых расширений, которые были удалены из PHP:

Расширение Удалено в Замена
mysql PHP 7.0 mysqli или PDO_MySQL
ereg PHP 7.0 PCRE (функции preg_*)
mssql PHP 7.0 sqlsrv или PDO_SQLSRV
mcrypt PHP 7.2 OpenSSL
recode PHP 7.4 iconv или mbstring

Удаленные SAPI

SAPI означает Server Application Programming Interface. Это слой между PHP и веб-сервером. Со временем некоторые SAPI были удалены из PHP. Давайте рассмотрим несколько примеров.

1. php-fpm (FastCGI Process Manager)

Шутка! php-fpm не был удален. На самом деле, это один из самых популярных SAPI для PHP. Я хотел начать с небольшой шутки, чтобы держать вас в тонусе. Всегда будьте бдительны в мире программирования!

2. apache_hooks

SAPI apache_hooks был удален в PHP 7.0. Это был альтернативный модуль Apache 1.x, который использовал API挂钩 Apache. Однако он стал устаревшим, так как Apache 2.x стал стандартом.

Вот простой пример того, как вы могли видеть использование PHP с Apache в прошлом:

<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>

Эта конфигурация Apache установит виртуальный хост для PHP-приложения. Хотя эта конфигурация не específica для apache_hooks, она дает вам представление о том, как PHP и Apache работают вместе.

3. aolserver

SAPI aolserver был удален в PHP 5.3. Он использовался для интеграции PHP с веб-сервером AOLserver, который больше не используется широко.

Таблица удаленных SAPI

Вот таблица, резюмирующая ключевые SAPI, которые были удалены из PHP:

SAPI Удалено в Примечания
apache_hooks PHP 7.0 Устаревший модуль Apache 1.x
aolserver PHP 5.3 Для интеграции с AOLserver
caudium PHP 7.0 Для Caudium веб-сервера
continuity PHP 7.0 Для Continuity сервера

В заключение, эволюция PHP включает не только добавление новых функций, но и удаление устаревших или проблемных. Как разработчик, важно следить за этими изменениями, чтобы ваш код оставался эффективным, безопасным и совместимым с последними версиями PHP.

Помните, в мире программирования изменения — это единственное постоянство. Принимайте их, учитесь у них, и вы вырастете как разработчик. Счастливого кодирования, и пусть ваши приключения с PHP будут свободны от ошибок и радостны!

Credits: Image by storyset