php 单例模式笔记
2024-09-29 07:16:08
<?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
最新文章
- js数组中数字从小到大排列
- 数据库中用varbinary存储二进制数据
- PHP获取某年第几周的开始日期和结束日期
- [洛谷2397]yyy loves Maths VI
- oracle多表查询
- 在SurfaceView中自由书写和擦除
- SSH实现无密码验证登录
- 201521123024 《Java程序设计》第13周学习总结
- 一款简单而不失强大的前端框架——【Vue.js的详细入门教程①】
- linux 内核提权
- 如何在mac上搭建sqli-labs
- CentOS 7 常用命令
- 基于Servlet的Echarts例子(2018-12-26更新)
- http协议和telnet指令讲解
- 如何引入.graphql文件并优雅的使用fragment
- 将Oracle 12c的某用户数据迁移至OracleXE的用户
- 执行git add .命令时报warning: LF will be replaced by CRLF in yarn.lock.
- select2 清除选中项解决办法
- C++ 中的导致编译错误汇总
- iOS----线程之间的通信
热门文章
- Docker存储卷
- string类型的方法
- python3+Appium自动化07-滑动操作以及滑动方法封装
- Linux系统的vim编辑器的配置文件的初步说明
- Linux网络管理命令ifdown/ifup与ifconfig/ip中的down/up命令的对比
- cgkib动态代理详解-不依赖接口,速度快
- ASP.NET MVC缓存
- SQL 分页实现
- KBEngine warring项目源码阅读(三) 实体文件与Account处理
- MySQL计算日期的函数DATE_SUB(d,INTERVAL expr type)