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

时间:2013-02-05 14:45:41

标签: php object mysqli procedural-programming

直到最近,我一直在使用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 个答案:

答案 0 :(得分:31)

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

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

唯一的问题是,就人们对编写良好的PHP代码的看法而言,你将越来越远离这条曲线。

值得注意的是,PDO库被认为是PHP中大多数数据库代码的理想选择,它只是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方法;这种跳跃本身并不会那么大。

相关问题