在 php 中实现 mysql 时,使用面向对象的方法与过程方法相比有显着差异吗?在 php 网站上mysqli_query
,(http://www.php.net/manual/en/mysqli.query.php),它提供了两者的示例,我只想知道是否有任何显着的性能差异,或者只知道何时使用它们。
问问题
6090 次
3 回答
4
哪个更好的答案是“视情况而定”。与任何事情一样,有多种不同的方法,您还应该记住,使用对象的代码不一定是面向对象的,但仍然可以按程序编写。同样,不使用对象的代码仍然可以是模块化的。
不过,我会选择mysqli
每次都使用该课程。性能没有显着差异。您可能不会意识到使用 DB 类的一些优点,例如简化的多态性,所以我使用该类的唯一理由是我更喜欢语法。mysqli
但是,我可能会建议您扩展或组合它,而不是直接使用。你只能在课堂上做到这一点。
class DB extends mysqli {
public function __construct() {
parent::__construct($_SERVER['DB_HOST'],
$_SERVER['DB_USER'], $_SERVER['DB_PASS']);
}
}
这是一个非常肤浅的例子。
我上面谈到的多态性的一个例子是这样的:
class User implements DAO {
private $db;
public function __construct(DB $db) {
$this->db = $db;
}
}
//Testing code is simplified compared to using it in production
class TestDB extends DB {}
new User(new TestDB);
new User(new DB);
顺便说一句,我绝对PDO
喜欢mysqli
于 2013-06-22T15:26:24.763 回答
0
由于您是实习生,因此建议您找出谁将在未来维护代码。
- 没有人在公司。如果您对此感到满意,请使用 OOP,因为 OOP 是当前的做法。
- 在房子里。遵循当前的做法,希望是 OOP
于 2013-06-22T19:22:13.170 回答
-6
不,没有区别。
但是您忽略了更重要的事情:应用程序代码中不必使用原始的 mysqi API 函数,既不是 OOP 也不是程序性的。
PHP 用户不知道一件事:API 调用不打算按原样使用。它们必须被包装在某种库中。没有它 mysqli 只是一个痛苦,它需要比旧的好 mysql ext 多 2 倍的代码。
因此,如果您使用这样的层,这很重要,但是如果它是使用内部的过程或 OOP 编写的,则无关紧要。
然而这个库应该以类的形式构建。没有别的办法。
于 2013-06-22T15:30:17.603 回答