为什么使用mysqli的面向对象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']; } ?>
直到最近,我一直在使用mysql*的过程方法。现在我想转向mysqli和面向对象方法。许多在线资源和书籍都指出,即使在PHP中,OOP也比过程性更好。在阅读了一些在线教程之后,我编写了一个连接到数据库并选择值的小程序。我想知道为什么面向对象的方法更好?另外,这是编写OO php网页的正确方法吗为什么使用mysqli的面向对象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,object,mysqli,procedural-programming,Php,Object,Mysqli,Procedural Programming,直到最近,我一直在使用mysql*的过程方法。现在我想转向mysqli和面向对象方法。许多在线资源和书籍都指出,即使在PHP中,OOP也比过程性更好。在阅读了一些在线教程之后,我编写了一个连接到数据库并选择值的小程序。我想知道为什么面向对象的方法更好?另外,这是编写OO php网页的正确方法吗 $host = "localhost"; $username = "root"; $password = ""; $dbname = "compdb"; @ $db = new mysqli($host
$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'];
}
?>
面向对象方法
$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'];
}
?>
程序方法
$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'];
}
?>
主要原因是PHP正在朝着面向对象编程的方向稳步发展 使用mysqli_xxx函数而不是OOP等效函数没有什么错;就守则而言,这是完全相同的 唯一的问题是,就人们对编写良好的PHP代码的看法而言,您将越来越落后于形势 值得注意的是,PDO库(被认为是PHP中大多数DB代码的理想库)仅适用于OOP。它没有过程接口。在过去的几个版本中,添加到PHP中的大多数其他新特性也是如此。如果你想充分使用PHP,你需要知道OOP 还有一点是关于为DB创建扩展类的能力,类似于:
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方法;这两个跳跃本身都不会有那么大。OO的一个优点是,您可以创建自己的类作为这个核心类的扩展,从而使您的方法保持整洁、可扩展的形式。可能是@halfer的重复-我没有想到mysqli的扩展类。现在我明白了。塔克斯