您的位置:首页 > 其它

静态方法和静态属性的最佳实践(单例模式)

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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息