web-dev-qa-db-fra.com

Pourquoi est orienté objet PHP avec mysqli mieux que l'approche procédurale?

J'utilise l'approche procédurale avec mysql * jusqu'à récemment. Maintenant, je veux passer à mysqli et à une approche orientée objet. De nombreuses ressources et livres en ligne indiquent que OOP est meilleur que procédural même en cas de PHP. Après avoir parcouru quelques tutoriels en ligne, j'ai écrit un petit programme qui se connecte à la base de données et sélectionne une valeur. Je veux savoir pourquoi l'approche orientée objet est meilleure? De plus, est-ce la bonne façon de coder une page Web php OO?

L'approche orientée objet

$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'];
}
?>

L'approche procédurale

<?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'];
}
?>
27
Stacy J

La raison principale est que PHP se déplace régulièrement vers OO programmation.

Il n'y a rien de mal à utiliser les fonctions mysqli_xxx() plutôt que les équivalents OOP; c'est exactement la même chose en ce qui concerne le code.

Le seul problème est que vous irez de plus en plus loin dans la courbe en termes de ce que les gens considèrent comme un code PHP bien écrit.

Il convient de noter que la bibliothèque PDO, qui est considérée comme l'idéal pour la plupart du code DB dans PHP est uniquement OOP. Il n'a pas d'interface procédurale. Et la plupart des autres nouvelles fonctionnalités ajoutées à PHP dans les dernières versions ne le sont pas non plus. Si vous souhaitez utiliser PHP au maximum, vous devez tout de même connaître OOP.

Il y a aussi le point sur la possibilité de créer une classe d'extension pour votre base de données - quelque chose comme ceci:

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

Bien sûr, vous pouvez obtenir la même chose avec du code procédural, mais ce n'est pas aussi net que la méthode OOP. Et bien sûr, cela n'est pertinent que si vous souhaitez réellement étendre la classe.

Cependant, dans un premier temps, le simple fait de passer de mysql_xxx() à mysqli_xxx() est un bon début. Déplacer tout le chemin vers l'utilisation de l'interface OOP serait encore mieux, mais simplement passer aux fonctions mysqli est un bon début.

L'utilisation de l'interface procédurale pour commencer facilitera certainement la transition par rapport aux anciennes fonctions mysql_xx(), donc si passer à l'interface OOP est trop bondissant au début, don sentez pas que vous devez tout faire en une seule fois. Commencez par une conversion vers les fonctions procédurales mysqli, puis passez aux méthodes OOP plus tard; aucun des sauts ne sera aussi gros en soi.

32
SDC