「[Java] シングルトン モード」 (クリックしてリンクを開く) で紹介したアイデアを使用すると、このデータベース リンク クラスをシングルトンに変えることができます。複数のユーザーが Web サイトにアクセスするだけでデータベース クエリ インスタンスが作成されず、速度が低下します。 Web サイト全体の速度が低下すると、Web サイトのデータベースに大きな負荷がかかり、Web サイトの速度が大幅に低下します。
シングルトン実装の最も重要な点は、依然として次の 3 つの点です:
1. プライベート コンストラクター。PHP では、複数のコンストラクターを使用できません。パラメータが異なっていても問題ありません。
2. プライベート クローン クラスの関数
3. この「インスタンス作成関数」は、対応するインスタンスが既に存在するかどうかを判断し、存在しない場合はそのインスタンスを作成します。
これにより、データベース接続クラスが 1 つだけ存在することが保証されます。
データベース テストにテーブル ユーザーがあることを説明するために、まずシングルトン モードを使用してデータベース接続 Model クラスを設計し、このテーブルの内容を Web ページにクエリします。
<?php class db{ private $link; //db类单例开始 //保存类实例的私有静态成员变量 private static $_instance; //定义一个私有的构造函数,确保单例类不能通过new关键字实例化,只能被其自身实例化 private function __construct($host,$username,$password,$database){ $this->link=mysql_connect($host,$username,$password); if(!$this->link){ die("连接失败!"); } mysql_query("set names utf8;"); mysql_select_db($database); } //定义私有的__clone()方法,确保单例类不能被复制或克隆 private function __clone(){} public static function getInstance($host, $username, $password,$database) { //检测类是否被实例化 if(!(self::$_instance instanceof self)){ self::$_instance=new db($host,$username,$password,$database); } return self::$_instance; } //执行SQL语句 public function query($query){ return mysql_query($query, $this->link); } //关闭数据库连接 public function close(){ return mysql_close($this->link); } } //调用单例类测试部分 header("Content-type: text/html; charset=utf-8"); //设置网页编码 $dbconnector=db::getInstance("localhost","root","root","test");//创建数据库连接类 $result=$dbconnector->query("select * from user");//查询数据库 for($i=0;$row=mysql_fetch_array($result);$i++){//打印查询结果 echo $row['id'].",".$row['username'].",".$row['password']."<br/>"; } ?>
関連する推奨事項:
以上がPHP シングルトン モードはデータベースを設計し、Model クラスに接続します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。