<?php
require_once("DB.php");
class DatabaseConnection
{
public static function get()
{
static $db = null;
if ( $db == null )
echo '1111';
$db = new DatabaseConnection();
return $db;
}
private function __construct()
{
}
}
var_dump(DatabaseConnection::get());
var_dump(DatabaseConnection::get());
?>
为什么 结果只输出一次1111
上面的static $db = null这里不是每执行一次get()就重新对$db付值为null了吗,求解下
因为参数是static,你在末尾对$db = new DatabaseConnection();你第二次进来的时候其实$db在第一次发生变化,所以不是null.
不信你吧static换成public,应该就会出现两次
static
变量的作用域和局部变量一样,生命周期和全局变量一样。
第二次的$db没有重新赋值,只有第一次进去被初始化了,参考下文档链接描述