静态方法和静态属性的最佳实践(单例模式)
2017-08-06 18:05
232 查看
<?php header('content-type:text/html;charset=utf-8'); /*要求,不管你怎么创建mysql对象,从类的设计层面上,保证只能有一个对象*/ class mysql{ //定义两个成员属性 //这个表示数据库的连接 private $mysql_link = null; //这个属性表示mysql的一个对象实例 private static $instance = null; //将构造函数设置为private,防止用户通过构造函数来创建对象 private function __construct($host,$user,$pwd){ $this->mysql_link = mysql_connect($host,$user,$pwd); } //防止克隆 private function __clone(){} public static function instance($host,$user,$pwd){ //如果self::$instance == null说明目前没有一个对象实例 //instanceof用于确定一个php变量是否属于某一类class的实例 //self::$instance instanceof self //上面的这句话:意思 //1.self::$instance表示一个变量 //2.instanceof是一个类型运算符,他的作用是判断全面的变量是否是后面这个类的对象实例 //3.self表示当前这个类 if(!self::$instance instanceof self){ //创建,通过new self($host,$user,$pwd) //对象实例,只能在类的内部去使用 self::$instance = new self($host,$user,$pwd); } return self::$instance; } } $mysql1 = mysql::instance('localhost','root','root'); $mysql2 = mysql::instance('localhost','root','root'); echo '<pre>'; var_dump($mysql1,$mysql2);
相关文章推荐
- Atitit. 软件设计 模式 变量 方法 命名最佳实践 vp820 attilax总结命名表大全
- Atitit. 软件设计 模式 变量 方法 命名最佳实践 vp820 attilax总结命名表大全
- Atitit. 软件设计 模式 变量 方法 命名最佳实践 vp820 attilax总结命名表大全
- 学习JavaScript最佳实践方法
- ReactiveSwift源码解析(四) Signal中的静态属性静态方法以及面向协议扩展
- ASP.NET缓存:方法和最佳实践(转)
- Java关键字static,abstract,instanceof使用(静态属性,静态方法,抽象类抽象方法的学习)
- php面向对象中static静态属性和静态方法的调用
- ASP.NET缓存的方法和最佳实践
- 按照《OSGi 原理与最佳实践》进行OSGi部署,发生的问题解决方法
- php之static静态属性与静态方法实例分析
- 用JAVASCRIPT实现静态对象、静态方法和静态属性
- ASP.NET 缓存:方法和最佳实践 页面缓存技术(Cache、XML)
- Java中单例设计模式之最佳实践举例
- 非静态的字段,方法或属性。。。。。。要求对象引用
- 用JAVASCRIPT实现静态对象、静态方法和静态属性
- Unity API 解析 (一)Application类静态属性及方法
- 非静态的字段、方法或属性要求对象引用
- Spring静态注入最佳实践
- 非静态的字段、方法或属性……要求对象引用【學習】要求對象引用?