7 静态方法
l 定义
public static(){ 代码 }
l 说明
(1) 静态方法是在类中定义的
(2) static是关键字,不能修改
(3) 静态方法专门用于操作静态属性
(4) 静态方法可以通过类名直接调用,形式:类名::静态方法名(参数)
class A{
private static $address = '北京';
public static function showAddress(){
echo "地址是:".self::$address;
}
}
A::showAddress();
// 类里面的静态方法只能访问类的静态属性,不能访问类的非静态成员。
l 静态属性和静态方法的最佳实践-单例模式
第一种:
class DaoMysql{
private $myslq_link;
private static $instance = null;
private function __construct($host, $user, $pwd){
$this->mysql_link = @mysqli_connect($host,$user,$pwd);
}
//通过这个静态方法来创建对象
public static function getSingleton($host,$user,$pwd){
if(self::$instance == null){
self::$instance = new DaoMysql($host,$user,$pwd);
}
return self::$instance;
}
private function __clone(){
}
}
$dao = DaoMysql::getSingleton('localhost','root','root');
var_dump($dao);
第二种:
class DaoMysql{
private $myslq_link;
private static $instance = null;
private function __construct($host, $user, $pwd){
$this->mysql_link = @mysqli_connect($host,$user,$pwd);
}
//通过这个静态方法来创建对象
public static function getSingleton($host,$user,$pwd){
if(!self::$instance instanceof self){
self::$instance = new self($host,$user,$pwd);
}
}
private function __clone(){
}
}
$dao = DaoMysql::getSingleton('localhost','root','root');
var_dump($dao);
l 补充知识点:instanceof
class Cat{
}
$cat = new Cat;
if($cat instanceof Cat){
echo "cat是Cat的对象实例";
}
//用于判断某对象是否是某类的对象实例

浙公网安备 33010602011771号