<?php
class Single
{
private static $_instance = null;
private function __construct()
{
}
private function __clone()
{
}
public static function getInstance()
{
if (!(self::$_instance instanceof self)) {
self::$_instance = new self();
}
return self::$_instance;
}
}
$test = Single::getInstance();
- 首先需要把 构造函数和克隆魔术方法都设置成是私有的 防止类被实例
- 提供静态公共方法
getInstance()
来实例类 - 为什么使用静态方法来实例
- 静态的方法在整个应用程序其间存储在内存中,速度快,但占用内存.
- 动态的方法在先声明类实例才能调用类中的方法
- 一般使用频繁的方法用静态方法,用的少的方法用动态的。静态的速度快,占内存。动态的速度相对慢些,但调用完后,立即释放类,可以节省内存,可以根据自己 的需要选择是用动态方法还是静态方法
- 静态方法主要的问题就是数据同步的问题。如果你的静态方法的类中不保存私有变量那么什么问题都不会有的。最好是包要操作的数据全部以参数的方式传到方法中去
- 静态方法是类方法,调用时不需要创建类实例
- 静态方法是静态绑定到子类,不是被继承