php – 制作PDO mysql静态连接类的最佳方法?
发布时间:2020-12-13 17:52:27 所属栏目:PHP教程 来源:网络整理
导读:我是PDO的新手,也是一般用 PHP的OOP所以请好好:)基本上我正在尝试基于PDO创建一个连接对象,以便我可以在我的网站中调用一个连接. 我需要一些准备好的语句,根据我通过使用我正在尝试在下面创建的相同db对象传递的ID来查找不同的结果. 如何创建和访问我在下面
我是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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |