单例模式
Singleton.php
<?php
namespace singleton;
/**
* 单例
*/
class Singleton
{
/**
* 自身实例
*
* @var object
*/
private static $_instance;
/**
* 构造函数
*
* @return void
*/
private function __construct()
{
}
/**
* 魔法方法
* 禁止clone对象
*
* @return string
*/
public function __clone()
{
echo 'clone is forbidden';
}
/**
* 获取实例
*
* @return object
*/
public static function getInstance()
{
if (!self::$_instance instanceof self) {
self::$_instance = new self;
}
return self::$_instance;
}
/**
* 测试方法
*
* @return string
*/
public function test()
{
echo "这是个测试 \n";
}
}
test.php
<?php
/**
* 创建型模式
*
* php单例模式
*
* @author TIGERB <https://github.com/TIGERB>
* @example 运行 php test.php
*/
// 注册自加载
spl_autoload_register('autoload');
function autoload($class)
{
require dirname($_SERVER['SCRIPT_FILENAME']) . '//..//' . str_replace('\\', '/', $class) . '.php';
}
/************************************* test *************************************/
use singleton\Singleton;
// 获取单例
$instance = Singleton::getInstance();
$instance->test();
// clone对象试试
$instanceClone = clone $instance;