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

xiaoxiao2021-02-28  77

<?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);
转载请注明原文地址: https://www.6miu.com/read-55901.html

最新回复(0)