为什么带有mysqli的面向对象的PHP比过程方法更好?[已关闭]

2022-08-30 14:55:50

直到最近,我一直在使用mysql*的过程方法。现在我想转向mysqli和面向对象的方法。许多在线资源和书籍都指出,即使在PHP的情况下,OOP也比程序性更好。在浏览了一些在线教程之后,我编写了一个连接到数据库并选择值的小程序。我想知道为什么面向对象的方法更好?另外,这是编写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正朝着OO编程的方向稳步前进。

使用函数而不是OOP等效物没有错;就代码而言,它是完全相同的。mysqli_xxx()

唯一的问题是,在人们认为编写良好的PHP代码方面,你将越来越落后于曲线。

值得注意的是,PDO库被认为是PHP中大多数数据库代码的理想选择,它仅是OOP。它没有过程接口。而且,在最近几个版本中添加到PHP中的大多数其他新功能也没有。如果你想充分利用PHP,你无论如何都需要知道OOP。

还有一点是关于能够为您的数据库创建一个扩展类 - 如下所示:

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

当然,你可以用过程代码实现同样的事情,但它并不像OOP方式那样整洁。当然,这只有在您真正想要扩展类时才相关。

但是,作为第一步,从到是一个很好的开始。将整个过程转移到使用OOP接口会更好,但切换到mysqli函数是一个良好的开端。mysql_xxx()mysqli_xxx()

首先使用过程接口肯定会使从旧函数的过渡更容易,因此,如果切换到OOP接口在开始时是一个太大的飞跃,请不要觉得你必须一次性完成所有操作。从转换到过程函数开始,然后切换到OOP方法;这两个跳跃本身都不会那么大。mysql_xx()mysqli


答案 2

推荐