<?php
/**
* 单例模式
1. 它们必须拥有一个构造函数,并且必须被标记为private
2. 它们拥有一个保存类的实例的静态成员变量
3. 它们拥有一个访问这个实例的公共的静态方法
单例类不能再其它类中直接实例化,只能被其自身实例化。它不会创建实例副本,而是会向单例类内部存储的实例返回一个引用。
*/
class Dog
{ static public $_instance;//声明一个静态变量(保存在类中唯一的一个实例)
private $_name;
/**
* 建立私有的构造方法,防止直接使用new
*/
private function __construct()
{
//初始化操作
echo "当执行 new self()时候 仅仅执行一次<br/>";
}
//私有化克隆方法
private function __clone(){
}
//声明一个getinstance()静态方法,用于检测是否有实例对象
static public function getinstance(){
//如果实例不存在生成实例
if(!self::$_instance){
self::$_instance = new self();
}
return self::$_instance;
}
//赋值实例名
public function setname($name){
$this->_name = $name;
}
//获取实例的名
public function getname(){
return $this->_name;
} }
$oneDog=Dog::getinstance();
$twoDog=Dog::getinstance();
$oneDog->setname('比特');
echo $twoDog->getname();
$twoDog->setname('中华田园');
echo "<br/>";
echo $oneDog->getname();
//new Dog(); Fatal error: Call to private Dog::__construct() from invalid context

最新文章

  1. js数组中数字从小到大排列
  2. 数据库中用varbinary存储二进制数据
  3. PHP获取某年第几周的开始日期和结束日期
  4. [洛谷2397]yyy loves Maths VI
  5. oracle多表查询
  6. 在SurfaceView中自由书写和擦除
  7. SSH实现无密码验证登录
  8. 201521123024 《Java程序设计》第13周学习总结
  9. 一款简单而不失强大的前端框架——【Vue.js的详细入门教程①】
  10. linux 内核提权
  11. 如何在mac上搭建sqli-labs
  12. CentOS 7 常用命令
  13. 基于Servlet的Echarts例子(2018-12-26更新)
  14. http协议和telnet指令讲解
  15. 如何引入.graphql文件并优雅的使用fragment
  16. 将Oracle 12c的某用户数据迁移至OracleXE的用户
  17. 执行git add .命令时报warning: LF will be replaced by CRLF in yarn.lock.
  18. select2 清除选中项解决办法
  19. C++ 中的导致编译错误汇总
  20. iOS----线程之间的通信

热门文章

  1. Docker存储卷
  2. string类型的方法
  3. python3+Appium自动化07-滑动操作以及滑动方法封装
  4. Linux系统的vim编辑器的配置文件的初步说明
  5. Linux网络管理命令ifdown/ifup与ifconfig/ip中的down/up命令的对比
  6. cgkib动态代理详解-不依赖接口,速度快
  7. ASP.NET MVC缓存
  8. SQL 分页实现
  9. KBEngine warring项目源码阅读(三) 实体文件与Account处理
  10. MySQL计算日期的函数DATE_SUB(d,INTERVAL expr type)