Heim >Backend-Entwicklung >PHP-Tutorial >Ein Problem mit dem Singleton-Modus. Warum wird static $db = null nur einmal ausgeführt?

Ein Problem mit dem Singleton-Modus. Warum wird static $db = null nur einmal ausgeführt?

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-09-08 08:43:551176Durchsuche

<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>

Antwortinhalt:

<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>

Da der Parameter statisch ist, haben Sie am Ende $db = new DatabaseConnection(); geändert. Tatsächlich hat sich $db beim ersten Mal geändert, also ist er nicht null Wenn Sie mir nicht glauben, ersetzen Sie es durch „statisch öffentlich“, es sollte zweimal erscheinen

Beim zweiten Mal wird $db nicht neu zugewiesen, sondern nur bei der ersten Initialisierung. Bitte beachten Sie die Beschreibung des Dokumentlinks unten

Der Umfang einer Variablen ist der gleiche wie bei einer lokalen Variablen, und der Lebenszyklus ist der gleiche wie bei einer globalen Variablen. static

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn