Процедурный и объектно-ориентированный интерфейс

Расширение mysqli предоставляет двойной интерфейс программисту. Поддерживаются как процедурная, так и объектно-ориентированная парадигмы программирования.

Пользователи, переходящие со старого расширения mysql, возможно, предпочтут процедурный интерфейс. Он весьма схож с интерфейсом старого расширения, и во многих случаях функции отличаются только префиксом в имени. Некоторые mysqli-функции принимают дескриптор соединения первым аргументом, в отличие от соответствующих им функций старого расширения, которые принимают его в качестве последнего необязательного аргумента.

Пример #1 Простота перехода со старого расширения mysql

<?php
$mysqli 
mysqli_connect("example.com""user""password""database");
$res mysqli_query($mysqli"SELECT 'Пожалуйста, не используйте ' AS _msg FROM DUAL");
$row mysqli_fetch_assoc($res);
echo 
$row['_msg'];

$mysql mysql_connect("example.com""user""password");
mysql_select_db("test");
$res mysql_query("SELECT 'расширение mysql в новых проектах.' AS _msg FROM DUAL"$mysql);
$row mysql_fetch_assoc($res);
echo 
$row['_msg'];
?>

Результат выполнения данного примера:

Пожалуйста, не используйте расширение mysql в новых проектах.

Объектно-ориентированный интерфейс

В дополнение к процедурному пользователи могут использовать объектно-ориентированный интерфейс. Документация заточена именно под объектный интерфейс. Объектно-ориентированный интерфейс предлагает функции сгруппированные по цели их применения, что облегчает их поиск и освоение. Тем не менее, в практических примерах к функциям приводится код для обеих парадигм.

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

Пример #2 Объектно-ориентированный и процедурный интерфейсы

<?php
$mysqli 
mysqli_connect("example.com""user""password""database");
if (
mysqli_connect_errno()) {
    echo 
"Не удалось подключиться к MySQL: " mysqli_connect_error();
}

$res mysqli_query($mysqli"SELECT 'Мир, полный ' AS _msg FROM DUAL");
$row mysqli_fetch_assoc($res);
echo 
$row['_msg'];

$mysqli = new mysqli("example.com""user""password""database");
if (
$mysqli->connect_errno) {
    echo 
"Не удалось подключиться к MySQL: " $mysqli->connect_error;
}

$res $mysqli->query("SELECT 'выбора, чтобы угодить всем.' AS _msg FROM DUAL");
$row $res->fetch_assoc();
echo 
$row['_msg'];
?>

Результат выполнения данного примера:

Мир, полный выбора, чтобы угодить всем.

Примеры в этом руководстве будут написаны в объектном стиле в виду того, что объектному подходу отдавалось предпочтение при создании документации.

Смешивание стилей

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

Пример #3 Плохой стиль программирования

<?php
$mysqli 
= new mysqli("example.com""user""password""database");
if (
$mysqli->connect_errno) {
    echo 
"Не удалось подключиться к MySQL: " $mysqli->connect_error;
}

$res mysqli_query($mysqli"SELECT 'Этот код работает, но лучше так не писать.' AS _msg FROM DUAL");
if (!
$res) {
    echo 
"Не удалось выполнить запрос: (" $mysqli->errno ") " $mysqli->error;
}

if (
$row $res->fetch_assoc()) {
    echo 
$row['_msg'];
}
?>

Результат выполнения данного примера:

Этот код работает, но лучше так не писать.

См. также