這段原碼在邏輯上怎麼理解

來源:互聯網
上載者:User
這段原碼在邏輯上如何理解
本帖最後由 shopnc1 於 2015-03-27 22:59:53 編輯

先簡單一下邏輯,當然細節我還是不理解的,只是說個大概,好表明我的意圖
這是一個向模板中拋變數的類是MVC模式,我想整明白的是,下面的代碼在邏輯上是如何互相作用,來達到向模板中拋出變數的
首先有一個至關重要的方法,即

class Tpl{
/**
* 拋出變數
*
* @param mixed $output
* @param void
*/
public static function output($output,$input=''){
self::getInstance();

self::$output_value[$output] = $input;
}

其中的的getlnstance()方法如下

class Tpl{
/**
* 執行個體化
*
* @return obj
*/
public static function getInstance(){
if (self::$instance === null || !(self::$instance instanceof Tpl)){
self::$instance = new Tpl();
}
return self::$instance;
}

class Tpl{
/**
* 單件對象
*/
private static $instance = null;

好,我的問題來了:
其中output方法中的self::getInstance();不理解,這裡它是做啥用的,這裡不好理解的是$instance是個null值,要是這樣,那還有啥意義呢,是空哈
我的理解(當然不一定對),output方法中有兩個句子,似乎是表明兩種可能,要是這樣,為啥不用if判斷呢,因為是兩種可能性
還有一個問題self::$output_value[$output] = $input;為啥加self呢,不加不是也可嗎,這裡不就是賦值一個數組嗎.為啥要畫蛇添足呢
------解決思路----------------------
這個模版渲染類實現有問題 不必去細究

public static function output($output,$input=''){
self::getInstance();
這個語句沒有必要 一個全是靜態方法的類 沒必要執行個體化
self::$output_value[$output] = $input;
}
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.