PHP プログラムをコーディングする場合、将来的にコードをより良く保守し、理解するために、いくつかの適切なデザイン パターンを使用することが不可欠です。エラーや不適切な箇所があれば、まずシングルトン パターンを共有したいと思います。 PHPer がそれを指摘してくれると助かります。
PHP におけるオブジェクトの存続期間は、スクリプトの開始からスクリプトの終了までであるため、PHP のシングルトン モードでは、1 ページ内でオブジェクトが複数回のみ使用されます (ページには 1 つのページではなく、他の多くのページが含まれる可能性があります)。狭義) 複数回使用される場合にのみ機能し、新しいオブジェクトは繰り返されず (複数人でプロジェクトに取り組んでいる場合、1 つのリクエストでオブジェクトが複数回インスタンス化されることは避けられません)、不要なリソースが発生します。 (データ コントロール接続操作の効果は非常に明白です)、もう 1 つの点は、スクリプト全体が同じオブジェクトであることを保証できることです。このモードはどのように実装されているのでしょうか。注意すべき点がいくつかあります。実装:
1. 最初に、__construct() メソッドをプライベート メソッドとして定義します。これにより、シングルトン モードは外部からインスタンス化できませんが、内部的にはインスタンス化できます。
2. クラス外からのクローン作成を防ぐために __clone() メソッドもシールドします2. 次に、インスタンスの保存に使用するプライベート変数と、プライベート変数を取得するパブリック関数 getInstance() を定義します。
リーリー リーリー リーリー リーリー リーリー リーリー
これらの理論を言うだけでは説得力がありません具体的な効果の違いを見てみましょう。
リーリー最初のコメント
$obj[$i] = Singlemodel::testTwo();この行は、シングルトン モードを使用すると、次の結果を取得できます
その後、
$obj[$i] = Singlemodel::testOne(); をコメントアウトし、非シングルトンモードを使用すると、次の結果が得られます
見られます
単一ケースパターン | ノーマルモード | 通常/単一ケース(回) | |
143816 | 847376 | 5.89 | |
0.0112519 | 0.2541389 | 22.59 | |
140432 | 168984 | 1.20 | |
0.0112612 | 0.0173110 | 1.54 |
リーリー
この時点で、自分でテストしてみると、接続数が比較的少ない場合、その差は比較的小さいことがわかります (上記の 1 つのリクエストに 5 つの接続がある場合と同様)。 1 回のリクエストで多くのインスタンス化を実現するには小さいということですが、これはもちろん効果がありません。第一に、これにより、複数のインスタンス化が回避され、さらにリソースの消費が削減されます。この 10ms のレベル差は、同時システムでも役立ちます。それを使用することで多くの利点があります。
シングルトンパターンについてはここまでです。次回は他のデザインパターンについて説明します。何か間違っている場合は、メッセージまたはメールでご指摘ください。
送ってください~
以上、PHPのデザインパターン(1)を内容も含めて紹介しましたが、PHPチュートリアルに興味のある方の参考になれば幸いです。