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
Freigeben: 2016-09-08 08:43:55
Original
1167 Leute haben es durchsucht

<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>
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren

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

Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
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
Aktuelle Ausgaben
PHP-Datenerfassung?
Aus 1970-01-01 08:00:00
0
0
0
PHP-Erweiterung intl
Aus 1970-01-01 08:00:00
0
0
0
Wie man PHP gut lernt
Aus 1970-01-01 08:00:00
0
0
0
Mehrere PHP-Versionen
Aus 1970-01-01 08:00:00
0
0
0
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage