這段原碼在邏輯上如何理解
本帖最後由 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;
}