tp5原始碼學習 容器類

2021-10-10 13:59:37 字數 1697 閱讀 8200

1.index.php呼叫

//容器獲取例項,執行例項的方法
2.container::get

public static function get($abstract, $vars = , $newinstance = false)

3.static::getinstance()

//單例模式

public static function getinstance()

return static::$instance;

}

4.容器的make方法

/**

* 建立類的例項

* @access public

* @param string $abstract 類名或者標識

* @param array|true $vars 變數

* @param bool $newinstance 是否每次建立新的例項

* @return object

*/public function make($abstract, $vars = , $newinstance = false)

$abstract = isset($this->name[$abstract]) ? $this->name[$abstract] : $abstract;

//是否已經有相應的例項,並且不是新建

if (isset($this->instances[$abstract]) && !$newinstance)

//$this->bind陣列內容

/** protected $bind = [

'build' => build::class,

];等*///是否已經繫結過

if (isset($this->bind[$abstract])) else

} else

if (!$newinstance)

return $object;

}

5.通過反射,返回類的例項 invokeclass()

/**

* 呼叫反射執行類的例項化 支援依賴注入

* @access public

* @param string $class 類名

* @param array $vars 引數

* @return mixed

*/public function invokeclass($class, $vars = )

}//其他情況通過建構函式進行例項

$constructor = $reflect->getconstructor();

$args = $constructor ? $this->bindparams($constructor, $vars) : ;

return $reflect->newinstanceargs($args);

} catch (reflectionexception $e)

}

自學TP5原始碼(一)

感覺在中國 thinkphp 在 php 框架中還是占有主導地位的。所以想透徹的理解一下這個聽說簡單易學的框架。1.入口檔案 定義應用目錄 載入框架引導檔案 require dir thinkphp start.php 複製 2.引導檔案namespace think thinkphp 引導檔案 1...

tp5原始碼分析之模板標籤庫

標籤庫,可以用來自定義模板檔案中的標籤解析方式 在tp5中自定義了內建標籤庫 cx.php 標籤庫建構函式,建立標籤庫物件 public function construct template 標籤庫可以用來解析模板檔案中的自定義標籤 public function parsetag content...

TP5學習總結

1.乙個類主要包括屬性和方法 2.public表示訪問修飾符,意思是公開的,沒有隱藏。在類的外部是可以訪問這些公開的屬性的方法function是定義方法的關鍵字。3.private 訪問修飾符,表示私有的。被private修飾的屬性和方法,在類的外部是不能訪問的。4.屬性是用來儲存資料的,一般是名詞...