この記事では、PHP シングルトン モードの定義と使用方法を主に紹介し、具体的なデータベース操作クラスの形式に基づいて、PHP シングルトン モードの機能、定義、使用方法、および関連する注意事項を詳細に分析します。
詳細は次のとおりです: まず、シングルトン モードについて簡単に紹介します。シングルトンモードは、アプリケーション内で特定のクラスのインスタンスを1つだけ保持するモードであり、外部環境の影響により、このクラスの2番目のインスタンスを生成することはできません。実用的な観点から見た利点は、WEB 開発において単一のデータ操作クラス インスタンスの存在を維持する場合、大規模なソフトウェア開発において不必要な冗長な接続データベース リソースの消費を削減できることです。維持するシングルトン シングルトンは常にメモリを占有し、コピーを持たないため、プログラムの状態はさまざまな操作を同期します。
PHP の場合、シングルトンを使用する最も一般的な機会は、データベース操作クラスを作成することです。ただし、PHP でシングルトンを実装する場合は、次のルールがあります: 1) シングルトン クラスには、現在宣言されているコンストラクターがあり、プライベートである必要があります。 2) シングルトン クラスのインスタンスが 1 つだけ存在するように、シングルトン クラスにはクラスのインスタンスを格納するための静的変数が必要です。 3) シングルトン クラスは、このシングルトンを適用するために他のすべてのオブジェクトに静的メソッドを提供する必要があります。 上記の 3 つの条件が満たされる理由: 1) シングルトン クラスはアプリケーション全体の実行中に 1 回しか作成できず、この作成は外部呼び出しによって完了するのではなく、それ自体で完了するためです。したがって、シングルトン クラスはそれ自体をインスタンス化するため、そのコンストラクターはプライベートである必要があります。他の外部オブジェクトは、シングルトン クラスのコピーを再度構築することはできません。 2) シングルトン クラスはそれ自体をインスタンス化することしかできず、すべての外部アプリケーションに独自のインスタンスを提供する必要があるため、クラス内には外部からアクセスできる内部アクセス ポイントが必要であり、それがクラス内への唯一の定常アクセス ポイントです。したがって、シングルトン クラス自体がインスタンス化するインスタンス オブジェクトを格納するには、静的変数を指定する必要があります。 3) シングルトン クラスのコンストラクターはプライベートであるため、シングルトン クラスは、シングルトン クラスを呼び出すための外部環境に対する外部インターフェイスを提供する必要があります。そのため、シングルトン クラスを初期化するか、シングルトン クラスを返すことができる静的メソッドが必要です。オブジェクトへの参照。 簡単な例:class DB{ private $_link; // 保持单例类的静态变量 static $_instance; // 私有的构造函数 private function __construct(){ $this->_link = @mysqli_connect(__HOST__, __USER__, __PASSWORD__, __DATABASE__); if(! ($this->_link)){ echo 'Something wrong occurs on the database connection!'; } } // 防止单例类被克隆 private function __clone(){} // 外界访问单例类实例的接口 public static function getInstance(){ if(! (self::$_instance instanceof self)){ self::$_instance = new self(); } return self::$_instance; } }上記で定義された __clone() 関数は、シングルトン クラス オブジェクトのクローン作成を防止することに注意してください。 以下も参照用のデータベース操作クラスの単純なシングルトンです:
class DB { /** * the database connection * @var resource * @access private */ private $_link; /** * the static instance of single db * @var object * @access static */ static $_instance; /** * construct the single object * @return null * @access private */ private function __construct(){ $this->_link = @mysqli_connect(__HOST__, __USER__, __PASSWORD__, __DATABASE__); if(! ($this->_link)){ echo 'Something wrong occurs on the database connection!'; } } /** * empty clone * @return null * @access private */ private function __clone(){} /** * for other object to get the instance of db * @return self::instance * @access public */ public static function getInstance(){ if(! (self::$_instance instanceof self)){ self::$_instance = new self(); } return self::$_instance; } /** * query * @param sql string * @param message string * @return resource * @access public */ public function query($sql,$message){ $result = @mysqli_query($this->$_link, $sql) or die($message . mysqli_error($this->$_link)); return $result; } /** * mysqli_num_rows * @param result resource * @return int * @access public */ public function num($result){ return @mysqli_num_rows($result); } /** * mysqli_fetch_array * @param result resource * @return array * @access public */ public function fetchArr($result){ return @mysqli_fetch_array($result); } /** * mysqli_insert_id * @return int * @access public */ public function last_id(){ return @mysqli_insert_id($this->_link); } /** * close the database connection * @param result resource * @return null * @access public */ public function close(){ @mysqli_close($this->_link); } /** * fetch once result from the specific sql query * @param sql string * @param message string * @return array * @access public */ public function fetchArrOnce($sql, $message){ $result = $this->query($sql, $message); $row = $this->fetchArr($result); return $row; } /** * fetch all results from the specific sql query * @param sql string * @param message string * @return array * @access public */ public function fetchArrMore($sql, $message){ $result = $this->query($sql, $message); $moreRow = array(); while($row = $this->fetchArr($result)){ $moreRow[] = $row; } return $moreRow; } /** * fetch the number of results from the specific sql query * @param sql string * @param message string * @return array * @access public */ public function fetchNum($sql, $message){ $result = $this->query($sql, $message); $resultNum = $this->num($result); return $resultNum; } /** * mysqli_prepare * @param sql string * @return stmt object * @access public */ public function prepare($sql){ return @mysqli_prepare($this->_link, $sql); } /** * mysqli_stmt_execute * @param stmt object * @param message string * @return bool * @access public */ public function stmt_execute($stmt, $message){ @mysqli_stmt_execute($stmt) or die($message . mysqli_error($this->_link)); } }Use:
define("__HOST__", "localhost"); define("__USER__", "root"); define("__PASSWORD__", ""); define("__DATABASE__", "eee"); $db = DB::getInstance();上記がこの記事の全内容です。みんなの勉強に役立ちます。
phpの基本デザインパターン(登録ツリーモード、ファクトリモード、シングルカラムモード)、デザインパターンシングルカラム_PHPチュートリアル
PHPオブジェクト指向-シングルカラムモード
HP基本デザインパターン(登録ツリーモード、ファクトリーモード、シングルカラムモード)、デザインモードシングルカラム
以上がPHPシングルトンパターンの定義と使用例を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPは1994年に発信され、Rasmuslerdorfによって開発されました。もともとはウェブサイトの訪問者を追跡するために使用され、サーバー側のスクリプト言語に徐々に進化し、Web開発で広く使用されていました。 Pythonは、1980年代後半にGuidovan Rossumによって開発され、1991年に最初にリリースされました。コードの読みやすさとシンプルさを強調し、科学的コンピューティング、データ分析、その他の分野に適しています。

PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。

PHPは、多数のWebサイトとアプリケーションをサポートし、フレームワークを通じて開発ニーズに適応するため、近代化プロセスで依然として重要です。 1.PHP7はパフォーマンスを向上させ、新機能を紹介します。 2。Laravel、Symfony、Codeigniterなどの最新のフレームワークは、開発を簡素化し、コードの品質を向上させます。 3.パフォーマンスの最適化とベストプラクティスは、アプリケーションの効率をさらに改善します。

phphassiblasifly-impactedwebdevevermentandsbeyondit.1)itpowersmajorplatformslikewordpratsandexcelsindatabase interactions.2)php'sadaptableability allowsitale forlargeapplicationsusingframeworkslikelavel.3)

PHPタイプは、コードの品質と読みやすさを向上させるためのプロンプトがあります。 1)スカラータイプのヒント:php7.0であるため、基本データ型は、int、floatなどの関数パラメーターで指定できます。 3)ユニオンタイプのプロンプト:PHP8.0であるため、関数パラメーターまたは戻り値で複数のタイプを指定することができます。 4)Nullable Typeプロンプト:null値を含めることができ、null値を返す可能性のある機能を処理できます。

PHPでは、クローンキーワードを使用してオブジェクトのコピーを作成し、\ _ \ _クローンマジックメソッドを使用してクローン動作をカスタマイズします。 1.クローンキーワードを使用して浅いコピーを作成し、オブジェクトのプロパティをクローン化しますが、オブジェクトのプロパティはクローニングしません。 2。\ _ \ _クローン法は、浅いコピーの問題を避けるために、ネストされたオブジェクトを深くコピーできます。 3.クローニングにおける円形の参照とパフォーマンスの問題を避けるために注意し、クローニング操作を最適化して効率を向上させます。

PHPはWeb開発およびコンテンツ管理システムに適しており、Pythonはデータサイエンス、機械学習、自動化スクリプトに適しています。 1.PHPは、高速でスケーラブルなWebサイトとアプリケーションの構築においてうまく機能し、WordPressなどのCMSで一般的に使用されます。 2。Pythonは、NumpyやTensorflowなどの豊富なライブラリを使用して、データサイエンスと機械学習の分野で驚くほどパフォーマンスを発揮しています。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

Dreamweaver Mac版
ビジュアル Web 開発ツール
