Почему объектно-ориентированный 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
функции, а затем переключиться на методы ООП; ни один прыжок не будет таким большим сам по себе.