Почему объектно-ориентированный PHP с mysqli лучше, чем процедурный подход?

Я использую процедурный подход с MySQL до недавнего времени. Теперь я хочу перейти на MySQL и объектно-ориентированный подход. Многие онлайн-ресурсы и книги утверждают, что ООП лучше процедурного даже в случае PHP. Пройдя несколько онлайн-уроков, я написал небольшую программу, которая подключается к базе данных и выбирает значение. Я хочу знать, почему объектно-ориентированный подход лучше? Плюс это правильный способ кодирования веб-страницы OO php?

Объектно-ориентированный подход

$host = "localhost";
$username = "root";
$password = "";
$dbname = "compdb";

@ $db = new mysqli($host, $username, $password, $dbname);

if(mysqli_connect_errno())
{
    die("Connection could not be established");
}

$query = "SELECT company_id FROM company_basic_details WHERE company_name = 'ABC'";
$result = $db->query($query);

$total_num_rows = $result->num_rows;

echo "The Results Are : <br>";

while($row = $result->fetch_array())
{
    echo $row['company_id'];
}
?>

Процедурный подход

<?php

$host = "localhost";
$username = "root";
$password = "";
$dbname = "compdb";

@ $db = mysqli_connect($host, $username, $password, $dbname);

if(mysqli_connect_errno())
{
    die("Connection could not be established");
}

$query = "SELECT company_id FROM company_basic_details WHERE company_name = 'ABC'";
$result = mysqli_query($db, $query);

$total_num_rows = mysqli_num_rows($result);

echo "The Results Are : <br>";

while($row = mysqli_fetch_array($result))
{
    echo $row['company_id'];
}
?>

1 ответ

Решение

Основная причина в том, что PHP неуклонно движется в направлении ОО-программирования.

Там нет ничего плохого в использовании mysqli_xxx() функции, а не эквиваленты ООП; это то же самое, что касается кода.

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

Стоит отметить, что библиотека PDO, которая считается идеальной для большей части кода БД в PHP, предназначена только для ООП. У него нет процедурного интерфейса. И при этом большинство других новых функций не добавлено в PHP в последних нескольких версиях. Если вы хотите использовать PHP в полной мере, вам все равно нужно знать ООП.

Есть также смысл в возможности создать класс расширения для вашей БД - что-то вроде этого:

class myDB extends mysqli {
     .... your own stuff here to extend and improve the base mysqli class
}

Конечно, вы можете добиться того же с процедурным кодом, но он не так хорош, как ООП. И, конечно, это актуально, только если вы действительно хотите расширить класс.

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

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

Другие вопросы по тегам