下面這段另類的寫法是為了啥

來源:互聯網
上載者:User
下面這段寫法中,問題一:建構函式裡面競然是空的,並且更另類的是他的下面竟然是執行個體化,如果建構函式是空的,下面如何執行個體化呢
道理是啥?

';    //請求時間        $trace[Language::get('nc_debug_request_time')] =  date('Y-m-d H:i:s',$_SERVER['REQUEST_TIME']).'
'; //系統已耗用時間 $query_time = number_format((microtime(true)-StartTime),3).'s'; $trace[Language::get('nc_debug_execution_time')] = $query_time.'
';//記憶體$trace[Language::get('nc_debug_memory_consumption')] = number_format(memory_get_usage()/1024/1024,2).'MB'.'
';//要求方法 $trace[Language::get('nc_debug_request_method')] = $_SERVER['REQUEST_METHOD'].'
'; //通訊協定 $trace[Language::get('nc_debug_communication_protocol')] = $_SERVER['SERVER_PROTOCOL'].'
'; //使用者代理程式 $trace[Language::get('nc_debug_user_agent')] = $_SERVER['HTTP_USER_AGENT'].'
'; //會話ID $trace[Language::get('nc_debug_session_id')] = session_id().'
'; //執行日誌 $log = Log::read(); $trace[Language::get('nc_debug_logging')] = count($log)?count($log).Language::get('nc_debug_logging_1').'
'.implode('
',$log):Language::get('nc_debug_logging_2'); $trace[Language::get('nc_debug_logging')] = $trace[Language::get('nc_debug_logging')].'
'; //檔案載入$files = get_included_files();$trace[Language::get('nc_debug_load_files')] = count($files).str_replace("\n",'
',substr(substr(print_r($files,true),7),0,-2)).'
'; return $trace; }}


回複討論(解決方案)

這種寫法是單例模式。

單例模式是一種常用的軟體設計模式。在它的核心結構中只包含一個被稱為單例類的特殊類。通過單例模式可以保證系統中一個類只有一個執行個體而且該執行個體易於外界訪問,從而方便對執行個體個數的控制並節約系統資源。如果希望在系統中某個類的對象只能存在一個,單例模式是最好的解決方案。

http://baike.baidu.com/view/1859857.htm

建構函式是否為空白,和執行個體化沒有關係
建構函式為空白,只不過表示執行個體化時沒有使用者自訂動作。並且也不執行父類(如果有的話)的建構函式

private function __construct(){}
表示該類不能在外部執行個體化,私人方法只能在定義它的類裡面訪問
在類外面 new Tpl
將會有一個 Call to private Tpl::__construct() from invalid context 的致命錯誤

這是單例模式的寫法,但少了
private function __clone(){}
如果單例模式的對象能被複製的話,就違背了單例的初衷

對於你的這個類,單不單例已經沒有意義了,因為他所有的屬性和方法都是靜態
因為靜態屬性是在各執行個體間共用的

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.