概要
シングルトン パターンとは何ですか?
クラスが 1 つのオブジェクト (またはインスタンス) のみを作成できる場合、このクラスはシングルトン クラスです。この設計パターンは、シングルトン デザイン パターン、または略してシングルトン パターンと呼ばれます。
シングルトンを使用する理由
-
# リソース アクセスの競合を処理します。
例: ログをファイルに出力する機能。
- # は、グローバルに一意なクラスを表します。
#実装方法
PHP のシングルトンモードを実装するには 3 つの手順が必要です* クラスを保存するために使用される静的メンバー変数。
* オブジェクトの作成または複製を防止するには、__construct と __clone をプライベートとして宣言する必要があります。
* このインスタンスにアクセスするためのパブリック静的メソッド。通常は getInstance
class single { private static $instance ; private function __construct(){} private function __clone(){} public static function getInstance() { if (empty(self::$instance)) { self::$instance = new single(); } return self::$instance; } }
ID を取得するメソッドをシングルトン クラスに追加します。グローバルに一意の ID 番号ジェネレーターが表示されます。
class single { private $id = 0; private static $instance ; private function __construct(){} private function __clone(){} public static function getInstance() { if (empty(self::$instance)) { self::$instance = new single(); } return self::$instance; } public function getId() { return $this->id++; } }
これは本当に完璧ですが、マルチスレッドの場合はどうなるのでしょうか?
スレッドの唯一の単一インスタンスの実装
php、nts の ts バージョンと nts バージョンの違いについて言及する必要があります。 (非スレッドセーフ) シングルスレッド構造、スレッド間でキャッシュデータを共有。 ts (スレッド セーフ) はマルチスレッド機能を備えて構築されており、複数のスレッド間で異なるデータ コピーを使用します。
php の ts バージョンを使用して、スレッド セーフ モードに自動的にアップグレードします。pthreads 拡張機能は、php の ts バージョンにのみインストールできます。
pecl に含まれる pthreads の最後のバージョンは php7.0 に基づいています。github の pthreads プロジェクトも更新を停止しました。興味がある場合は、7.0 にアクセスするだけで履歴を見逃すことができます。
pthreads 拡張機能を php-7.0.9-Win32-VC14-x64 バージョンにインストールしました。
マルチスレッドの場合、シングルトンのスコープはプロセスのみからスレッドのみに変わります。
require 'single.php'; class Request extends Thread { public $url; public function __construct($url) { $this->url = $url; } public function run() { echo single::getInstance()->getId(); echo "\n"; } } $chG = new Request("www.google"); $chG ->start(); $chG->join(); echo $chG->getThreadId(); echo "\n"; $chB = new Request("www.baidu"); $chB ->start(); $chB->join(); echo $chB->getThreadId(); echo "\n";
ここでは 2 つのスレッドが作成されますが、0 から始まる ID は両方の実行で取得できます。これは、2 つのスレッドの単一クラスが 2 つの異なるシングルトン オブジェクトであることを示しています。
PHP のシングルトン モードを実装するには 3 つの手順が必要です
私は PHP でマルチスレッドを使用したことがありません。それはもう後戻りできないことのようです。みんながどう思うかわかりません。
以上が【デザインパターン】PHPシングルトンパターンの応用シナリオと実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

JS 单例模式是一种常用的设计模式,它可以保证一个类只有一个实例。这种模式主要用于管理全局变量,避免命名冲突和重复加载,同时也可以减少内存占用,提高代码的可维护性和可扩展性。

单例模式:通过函数重载提供不同参数的单例实例。工厂模式:通过函数重写创建不同类型的对象,实现创建过程与具体产品类的解耦。

在软件开发中,常常遇到多个对象需要访问同一个资源的情况。为了避免资源冲突以及提高程序的效率,我们可以使用设计模式。其中,单例模式是一种常用的创建对象的方式,即保证一个类只有一个实例,并提供全局访问。本文将为大家介绍如何使用PHP实现单例模式,并提供一些最佳实践的建议。一、什么是单例模式单例模式是一种常用的创建对象的方式,它的特点是保证一个类只有一个实例,并提

Singleton模式确保一个类只有一个实例,并提供了一个全局的访问点。它确保在应用程序中只有一个对象可用,并处于受控状态。Singleton模式提供了一种访问其唯一对象的方式,可以直接访问,而无需实例化类的对象。示例<?php classdatabase{ publicstatic$connection; privatefunc

导言PHP设计模式是一组经过验证的解决方案,用于解决软件开发中常见的挑战。通过遵循这些模式,开发者可以创建优雅、健壮和可维护的代码。它们帮助开发者遵循SOLID原则(单一职责、开放-封闭、Liskov替换、接口隔离和依赖反转),从而提高代码的可读性、可维护性和可扩展性。设计模式的类型有许多不同的设计模式,每种模式都有其独特的目的和优点。以下是一些最常用的php设计模式:单例模式:确保一个类只有一个实例,并提供一种全局访问此实例的方法。工厂模式:创建一个对象,而不指定其确切类。它允许开发者根据条件

单例模式在PHP分布式系统中的应用场景和线程安全流程引言:随着互联网的迅猛发展,分布式系统已成为现代软件开发的热门话题。而在分布式系统中,线程安全一直是一个重要的问题。在PHP开发中,单例模式是一种常用的设计模式,它可以有效地解决资源共享和线程安全的问题。本文将重点讨论单例模式在PHP分布式系统中的应用场景和线程安全流程,并提供具体的代码示例。一、单例模式的

1.什么是PHP设计模式?PHP设计模式是预定义的代码模板,旨在解决常见的软件开发问题。它们提供了经过验证的解决方案,可以提高代码的可重用性、可维护性和可扩展性。2.PHP设计模式的类型php中有许多不同的设计模式,每种模式都有其特定的用途。最常见的模式包括:单例模式:确保一个类只有一个实例。工厂模式:根据传给它的数据创建不同类型的对象。策略模式:允许程序在运行时更改其行为。观察者模式:允许对象订阅事件并在事件发生时获得通知。3.单例模式示例classSingleInstance{private

单例模式在PHP中的常见应用场景剖析概述:单例模式(SingletonPattern)是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点来访问该实例。在PHP中,使用单例模式可以有效地限制类的实例化次数和资源占用,提高代码的性能和可维护性。本文将通过分析常见的应用场景,给出具体的PHP代码示例,来说明单例模式的使用方法和好处。数据库连接管


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

WebStorm Mac版
便利なJavaScript開発ツール

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

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

メモ帳++7.3.1
使いやすく無料のコードエディター

ホットトピック



