目錄
單例模式的一個問題,static $db = null為什麼只執行一次
Sep 08, 2016 am 08:43 AM
php
<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>
登入後複製
登入後複製
因為參數是static,你在末尾對$db = new DatabaseConnection();你第二次進來的時候其實$db在第一次發生變化,所以不是null.
不信你吧static換成public,應該就會出現兩次
第二次的$db沒有重新賦值,只有第一次進去被初始化了,參考下文檔連結描述
static
變數的作用域和局部變數一樣,生命週期和全域變數一樣。
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前
By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
擊敗分裂小說需要多長時間?
3 週前
By DDD
R.E.P.O.保存文件位置:在哪里以及如何保護它?
3 週前
By DDD

熱門文章
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前
By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
擊敗分裂小說需要多長時間?
3 週前
By DDD
R.E.P.O.保存文件位置:在哪里以及如何保護它?
3 週前
By DDD

熱門文章標籤

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發
