<code><?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了吗,求解下</code>
<code><?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了吗,求解下</code>
매개변수가 정적이기 때문에 두 번째 들어올 때 마지막에 $db = new DatabaseConnection();을 변경했습니다. 사실 처음에는 $db가 변경되었으므로 null이 아닙니다.
믿을 수 없다면 static으로 바꾸면 두 번 나타나야 합니다.
두 번째 $db는 재할당되지 않으며 최초 초기화 시에만 아래 문서 링크 설명을 참고하시기 바랍니다
static
변수의 범위는 지역변수와 동일하고, 생명주기는 전역변수와 동일합니다.