Подтвердить что ты не робот

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

Я использовал процедурный подход с mysql * до недавнего времени. Теперь я хочу перейти к mysqli и объектно-ориентированному подходу. Многие онлайн-ресурсы и книги говорят о том, что ООП лучше, чем процедурный, даже в случае 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'];
}

? >

4b9b3361

Ответ 1

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

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

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

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

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

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

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

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

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