30

直到最近,我一直在使用 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'];
}
?>
4

1 回答 1

39

主要原因是PHP正朝着OO编程的方向稳步前进。

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

唯一的问题是,就人们认为编写良好的 PHP 代码而言,您将越来越落后于曲线。

值得注意的是,被认为是 PHP 中大多数 DB 代码的理想选择的 PDO 库是纯 OOP 的。它没有程序界面。在过去的几个版本中,大多数其他新特性也没有添加到 PHP 中。如果你想充分利用 PHP,无论如何你都需要了解 OOP。

为您的数据库创建扩展类的能力也很重要——如下所示:

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

当然,您可以使用过程代码实现相同的目标,但它不如 OOP 方式简洁。当然,只有当你真的想扩展这个类时,这才是相关的。

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

一开始就使用过程式接口肯定会让旧mysql_xx()功能的过渡更容易,所以如果一开始切换到OOP接口太过跳跃,不要觉得你必须一次性完成。从转换为过程mysqli函数开始,然后切换到 OOP 方法;两个跳跃本身都不会那么大。

于 2013-02-05T14:55:50.873 回答