ホームページ >バックエンド開発 >PHPチュートリアル >PHP シングルトン モードはデータベースを設計し、Model クラスに接続します。

PHP シングルトン モードはデータベースを設計し、Model クラスに接続します。

小云云
小云云オリジナル
2018-03-29 10:53:041693ブラウズ

「[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[&#39;id&#39;].",".$row[&#39;username&#39;].",".$row[&#39;password&#39;]."<br/>";  
}    
?>


    これにより、クラス db に対応するインスタンス $dbconnector が 1 つだけ存在することが保証されます。データベースコネクタというか、$dbconnector と $dbconnector1 を操作すると、同じ効果が得られます。データベースがシングルトーン化されているため、$dbconnector1 を保存するためにサーバーのメモリにリソースが割り当てられることはありません。データベース。


関連する推奨事項:

  1. データベース設計の経験_PHP チュートリアル


以上がPHP シングルトン モードはデータベースを設計し、Model クラスに接続します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。