3

在 php 中实现 mysql 时,使用面向对象的方法与过程方法相比有显着差异吗?在 php 网站上mysqli_query,(http://www.php.net/manual/en/mysqli.query.php),它提供了两者的示例,我只想知道是否有任何显着的性能差异,或者只知道何时使用它们。

4

3 回答 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

由于您是实习生,因此建议您找出谁将在未来维护代码。

  1. 没有人在公司。如果您对此感到满意,请使用 OOP,因为 OOP 是当前的做法。
  2. 在房子里。遵循当前的做法,希望是 OOP
于 2013-06-22T19:22:13.170 回答
-6

不,没有区别。

但是您忽略了更重要的事情:应用程序代码中不必使用原始的 mysqi API 函数,既不是 OOP 也不是程序性的。

PHP 用户不知道一件事:API 调用不打算按原样使用。它们必须被包装在某种库中。没有它 mysqli 只是一个痛苦,它需要比旧的好 mysql ext 多 2 倍的代码。

因此,如果您使用这样的层,这很重要,但是如果它是使用内部的过程或 OOP 编写的,则无关紧要。

然而这个库应该以类的形式构建。没有别的办法。

于 2013-06-22T15:30:17.603 回答