tomwright / singleton
该包最新版本(1.0.3)的许可证信息不可用。
一个简单快捷的单例包。
该包的规范存储库似乎已消失,因此该包已被冻结。
1.0.3
2017-02-01 19:38 UTC
Requires
This package is not auto-updated.
Last update: 2019-04-11 00:20:02 UTC
README
Singleton 是一个简单的包,可用于实现单例设计模式。
安装
composer require tomwright/singleton
基本用法
use TomWright\Singleton\SingletonTrait class DatabaseConnection { use SingletonTrait; public $connectionId; public function __construct() { $this->connectionId = rand(); } } $db = DatabaseConnection::getInstance(); echo $db->connectionId; // 1231 $db = DatabaseConnection::getInstance(); echo $db->connectionId; // 1231 $db = DatabaseConnection::getInstance('another_connection'); echo $db->connectionId; // 1543 $db = DatabaseConnection::getInstance('another_connection'); echo $db->connectionId; // 1543 // The argument passed in here is defaulted to "default" $db = DatabaseConnection::getInstance('default'); echo $db->connectionId; // 1231
设置自己的实例
如有必要,您可以自己设置一个特定的实例。
$db = new DatabaseConnection(); echo $db->connectionId; // 9373 DatabaseConnection::setInstance('some_connection', $db); $db = DatabaseConnection::getInstance('some_connection'); echo $db->connectionId; // 9373
附加功能
您可以使用一些其他方法来自定义与该包的体验。
static::createSingleton($instanceId)
如果此方法存在于您的类中,它将用于而不是您类中的默认 __construct() 方法。
请注意,它必须 返回 新的实例。
use TomWright\Singleton\SingletonTrait class DatabaseConnection { use SingletonTrait; public $connectionId; public function __construct() { $this->connectionId = rand(); } public static function createSingleton($instanceId) { $instance = new static(); if ($instanceId == 'my-specific-connection') { $instance->connectionId = 1; } return $instance; } } $db = DatabaseConnection::getInstance(); echo $db->connectionId; // 2313 $db = DatabaseConnection::getInstance('some-general-connection'); echo $db->connectionId; // 5432 $db = DatabaseConnection::getInstance('my-specific-connection'); echo $db->connectionId; // 1
initSingleton($instanceId)
如果此方法存在于您的类中,它将在实例创建后立即执行一次。
use TomWright\Singleton\SingletonTrait class DatabaseConnection { use SingletonTrait; public $connectionId; public function __construct() { $this->connectionId = rand(); } public static function initSingleton($instanceId) { if ($instanceId == 'my-specific-connection') { $this->connectionId = 1; } } } $db = DatabaseConnection::getInstance(); echo $db->connectionId; // 2313 $db = DatabaseConnection::getInstance('some-general-connection'); echo $db->connectionId; // 5432 $db = DatabaseConnection::getInstance('my-specific-connection'); echo $db->connectionId; // 1