2013-06-22 91 views
3

在php中实现mysql时,是否在使用面向对象方法而不是使用过程方法时存在显着差异?关于mysqli_query,(http://www.php.net/manual/en/mysqli.query.php)的php网站上,它提供了两个示例,我只想知道是否存在任何显着的性能差异,或只是知道何时使用它们中的每一个。在php程序和面向对象实现的差异?

+0

我是一个n00b我自己,但从我的理解,程序方法更容易阅读。除此之外,没有什么。 (纠正我,如果我错了) – dayuloli

+2

表现:没有。 Codeflow:是的。选择一个适合你的项目。较新的OO代码可能有利于更多的面向对象方法,然后是现有的/较旧的程序代码。在面向对象方法中扩展和更好地控制对象的能力在大型项目中是很有价值的。 – Wrikken

+0

事情是,我正在为我正在实习的公司从头开始写一个网站。继续使用OO方法会更好吗?它是否更具前瞻性?对不起,如果我不清楚。 – JPeroutek

回答

3

回答哪一个是更好是“它要看”。与其他任何东西一样,有各种不同的方法,您还应该记住,使用对象的代码不一定是面向对象的,但仍然可以通过程序来编写。同样,不使用对象的代码仍然可以模块化。

虽然我会选择每次使用mysqli类。性能没有显着差异。您可能不会意识到使用诸如简化多态的数据库类的一些优点,所以我唯一使用该类的参数是我更喜欢语法。但是,我并不直接使用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

+0

感谢您提供详细的答案,并提供了一个很好的解释和示例。我只是打勾了,但我会等一会儿,然后才会有更好的答案。 – JPeroutek

-4

不,没有什么区别。

但是你忽略了更重要的事情:在应用程序代码中不必使用原始的mysqi API函数,无论是OOP还是程序。

PHP用户不知道有一件事:API调用并不打算按原样使用。他们必须被包装在某种图书馆中。没有它mysqli只是在后面痛苦,它需要比旧的好的mysql分机多两倍的代码。

所以,如果您使用这样的图层,它确实很重要,但如果它是使用内部的程序或OOP编写的,则无关紧要。

然而,这个库应该建立在类的形式。没有别的办法。

+0

所以你在说应该创建一个所有MySQLi函数都被包装好的类?或者你在谈论更多的模型课程?我真的不知道MySQLi如何比原始的MySQL扩展需要两倍的代码量...... – Havsmonstret

+0

我正在谈论第一个。但我不得不承认,要理解DRY原则,必须具备一定的经验和一些项目。 –

0

由于你是一名实习生,因此找出将来要维护代码的人是明智的。

  1. 没有公司。与OOP一起去,如果你对此感到满意,因为OOP是目前的做法。
  2. In House。有目前的做法,希望OOP
+0

谢谢你的回答。我认为我们正在内部进行这项工作,因为这就是我制作网站的原因,他们雇用的最后一个组每隔两周就会更换一次cms系统,所以我们正在寻求长期稳定性。 – JPeroutek