为什么面向对象的PHP与mysqli比程序方法更好?

Sta*_*y J 28 php mysqli procedural-programming object

直到最近,我一直在使用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'];
}
?>
Run Code Online (Sandbox Code Playgroud)

程序方法

<?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'];
}
?>
Run Code Online (Sandbox Code Playgroud)

SDC*_*SDC 34

主要原因是PHP正朝着面向对象编程的方向稳步前进.

使用mysqli_xxx()函数而不是OOP等价物没有任何问题; 就代码而言,它完全相同.

唯一的问题是,就人们对编写良好的PHP代码的看法而言,你将越来越远.

值得注意的是,PDO库被认为是PHP中大多数DB代码的理想选择,它只是OOP.它没有程序界面.在过去的几个版本中,大多数其他新功能也没有添加到PHP中.如果你想最充分地使用PHP,你无论如何都需要知道OOP.

关于为数据库创建扩展类的能力还有一点 - 就像这样:

class myDB extends mysqli {
     .... your own stuff here to extend and improve the base mysqli class
}
Run Code Online (Sandbox Code Playgroud)

当然,您可以使用过程代码实现相同的功能,但它并不像OOP那样整洁.当然,只有你真的想扩展课程才有意义.

然而,作为第一步,只从移动mysql_xxx()mysqli_xxx()是一个很好的开始.移动整个方式使用OOP接口会更好,但只需切换到mysqli函数就是一个好的开始.

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