mysqli,面向对象编程(OOP)与过程式编程比较

12

我刚刚第一次看到这个。我不知道你可以通过这样的方式实例化一个 mysqli 类:

new mysqli( $host, $username, $password, $db );

这对我来说是崭新的……在连接到数据库时,我看过的所有在线教程或书籍都会像这样做:

$conn = mysqli_connect( $host, $username, $password, $db );

if ( !$conn ) {
    die( 'Sorry, could not connect');
}

为什么大多数教程都使用过程式编程方式?即使是在创建单独的数据库类的教程中,也会让我使用过程式样式的代码...

mysqli 过程式 VS 面向对象有什么区别?有吗?我需要安装某些扩展程序吗,还是可以直接在我的代码中使用?作为一个新手,我不太确定。

此外,何时使用 PDO 而不是 mysqli 是个好主意呢?PDO 最常被那些从事大型企业应用程序开发的开发者使用吗?还是只是一种偏好问题?

感谢任何帮助......学习 PHP 已经迅速成为了一种上瘾的状态...我只想知道更多。


大多数mysqli教程都针对那些熟悉旧的mysql库(仅过程式)的人。从mysql到过程式mysqli的转换对于人们来说比转换为面向对象的mysqli要少一些心理上的转变。但是,正如下面的Alex指出的那样,使用PDO比使用上述任何一种都更好,因此最好直接使用PDO。 - El Yobo
3个回答

14

互联网上99%的PHP教程都已过时,提倡糟糕的代码,或者是由那些可能不应该教授PHP的人编写的(通常包括以上几点)。你应该找到一些好的教程

PDO通常比mysqli更受开发人员的青睐,包括我。首先,它可以处理许多不仅限于MySQL的数据库。


+1 对于第一句话,如果可能的话,下一句也可以加上 +1。 - El Yobo
1
链接页面已删除。您能否在此回答中列出好的PHP教程? - MAKZ
@MAKZ 只要获得10k声望,你就可以看到它 :) - alex
1
@alex,为什么我要花一年以上的时间来看你在不到一分钟内就能提供的列表?拜托了先生! - MAKZ

5

从实际角度回答你的问题:

为什么大多数教程都使用过程式方式?

可以说原因与技术无关。

mysqli过程式和面向对象有什么区别吗?

没有。

我需要安装任何扩展吗?

不需要(当然,除了mysqli本身)。

另外,何时使用PDO是一个好主意?

是的。事实上,PDO将是唯一明智的选择。

您必须理解mysqli函数集只是低级API,不能直接使用。必须在mysqli之上实现一个包装器,然后使用该包装器的方法。而PDO已经是这样的包装器,可以帮助执行许多任务。我写了一份PDO指南,强调其优点并揭示了一些迷信,希望您能在其中找到许多问题的答案。


3
大多数 mysqli_* 函数都是对象方法的别名(PHP 内部可以轻松使用 C 宏实现,因此许多扩展程序采用了这种方法)。但也为了熟悉性,以便旧的 mysql 函数的用户更容易采用新接口。使用面向对象或过程化接口只是风格/偏好问题。
现在一般更喜欢使用 PDO,但它不提供许多特定于 mysql 的功能。因此,可能仍然有一些情况需要使用 mysqli 扩展。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接