摘要:<?php /** * Created by PhpStorm. * 單例模式連接數(shù)據(jù)庫 1、構(gòu)造函數(shù)需要標(biāo)記為private(訪問控制:防止外部代碼使用new操作符創(chuàng)建對象),單例類不能在其他類中實例化,只能被其自身實例化; 2、擁有一個保存類的實例的靜態(tài)成員變量 3、擁有一個訪問這個實例的公共的靜態(tài)方法(常用getInsta
<?php /** * Created by PhpStorm. * 單例模式連接數(shù)據(jù)庫 1、構(gòu)造函數(shù)需要標(biāo)記為private(訪問控制:防止外部代碼使用new操作符創(chuàng)建對象),單例類不能在其他類中實例化,只能被其自身實例化; 2、擁有一個保存類的實例的靜態(tài)成員變量 3、擁有一個訪問這個實例的公共的靜態(tài)方法(常用getInstance()方法進(jìn)行實例化單例類,通過instanceof操作符可以檢測到類是否已經(jīng)被實例化) */ class Db { private static $pdo; public static function getPdo () { var_dump(self::$pdo); echo '</br>'; if ( self::$pdo == null ) { $host = '127.0.0.1'; $user = 'root'; $pwd = 'root'; $dbname = 'php_edu'; $dsn = "mysql:host=$host;dbname=$dbname;charset=utf8;port=3306"; $pdo = new PDO ( $dsn, $user, $pwd ); $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); static::$pdo = $pdo; } return static::$pdo; } public static function getStmt ( $sql ) { $pdo = static::getPdo (); return $pdo -> prepare( $sql ); } public static function getinsertids() { $pdo = self::getPdo(); $insertid = $pdo->lastInsertId(); return $insertid; } } $sql = "SELECT * FROM user"; $stmt = Db::getStmt ( $sql ); $stmt = Db::getStmt ( $sql ); ?>
批改老師:天蓬老師批改時間:2019-06-03 16:59:00
老師總結(jié):受連接數(shù)量限制, 單例模式的作用很大, 不過, 現(xiàn)在的惰性連接, 已經(jīng)緩解或杜絕了重復(fù)連接的效率問題