php单例模式为何只能实例化一次

发布时间:2019-08-04编辑:脚本学堂
php的单例模式,在php编程中用的最多的模式之一,为什么只能实例化一次呢?看了本文的例子,你就会明白了。

php单例演示示例:

<?php
/**
 * php单例
 * site www.jb200.com
*/
class Example
{
// 保存类实例在此属性中
private static $instance;
// 构造方法声明为private,防止直接创建对象
private function __construct()
{
echo 'I am constructed';
}
// singleton 方法
public static function singleton()
{
if (!isset(self::$instance)) {//判断是否以前创建了当前类的实例
$c = __CLASS__;//获取类名
self::$instance = new $c;//如果没有创建,实例化当前类,这里实现类只实例化一次
}
return self::$instance;//返回类的实例
}
// Example类中的普通方法
public function bark()
{
echo 'Woof!';
}
// 阻止用户复制对象实例
public function __clone()
{
   trigger_error('Clone is not allowed.', E_USER_ERROR);
}
}
// 这个写法会出错,因为构造方法被声明为private
$test = new Example;
// 下面将得到Example类的单例对象
$test = Example::singleton();
$test->bark();
// 下面将得到Example类的单例对象
$test = Example::singleton();
$test->bark();
// 复制对象将导致一个E_USER_ERROR.
$test_clone = clone $test;
?>

您可能感兴趣的文章:
php设计模式之单例模式的实例代码
学习php设计模式之单例模式
php实现的单例模式的例子
学习php单例模式及应用实例
php单例模式的演示代码
有关php单例模式介绍及例子
php设计模式之单例模式学习
php单例模式的例子