>  기사  >  백엔드 개발  >  싱글톤 모드의 문제, static $db = null이 한 번만 실행되는 이유는 무엇입니까?

싱글톤 모드의 문제, static $db = null이 한 번만 실행되는 이유는 무엇입니까?

WBOY
WBOY원래의
2016-09-08 08:43:551085검색

<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변수의 범위는 지역변수와 동일하고, 생명주기는 전역변수와 동일합니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.