php – 制作PDO mysql静态连接类的最佳方法?

前端之家收集整理的这篇文章主要介绍了php – 制作PDO mysql静态连接类的最佳方法?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是PDO的新手,也是一般用 PHP的OOP所以请好好:)基本上我正在尝试基于PDO创建一个连接对象,以便我可以在我的网站中调用一个连接.

我需要一些准备好的语句,根据我通过使用我正在尝试在下面创建的相同db对象传递的ID来查找不同的结果.

如何创建和访问我在下面设置的db类,然后使用其中的函数提取我需要的相关信息?任何例子都很棒,所以我可以了解最佳实践等.

提前谢谢了.

class db {

    private static $connection;

    private function __construct(){}
    private function __clone(){}

    private static function connect($db_server="localhost",$db_user="user",$db_pass="password") {
        if(!$this->connection){
            try{
                $this->connection = new PDO($db_server,$db_user,$db_pass);
            } catch (PDOException $e) {
                $this->connection = null;
                die($e->getMessage());
            }
        }
        return $this->connection;
    }

}

$dbh = new db::connect();

$stmt = $dbh->prepare("SELECT * FROM questions where id = ?");
if($stmt->execute(array($_REQUEST['testid']))) {
  while ($row = $stmt->fetch()) {
    print_r($row);
  }
}
您可以从不再使用Singleton模式开始.它(以及一般的静态类)对于程序编程中的全局变量不好的所有相同原因都是不好的.

那就是说…你应该只是确保你在整个地方使用相同的连接,而不是试图强制实现连接对象的唯一性.

这是我的意思的一个例子:

class Foo
{
    protected $connection = null;
    public function __construct( PDO $connection ) 
    {
        $this->connection = $connection;
    }
}

class Bar
{
    // all the same as in Foo
}

$connection = new PDO('sqlite::memory');

$foo = new Foo( $connection );
$bar = new Bar( $connection );

此时,$foo和$bar对象都可以访问同一个PDO实例.如果您有一个需要访问数据库的对象,那么您只需在构造函数中为其提供连接.

您可能想要观看两个视频(幻灯片将包含Java代码,但您应该没有理解它):

> Global State and Singletons
> Don’t Look For Things!

原文链接:https://www.f2er.com/php/133829.html

猜你在找的PHP相关文章