2013-01-15 23 views
8

我在一個項目中使用Laravel 3,這是一種快樂。我還多次查看了源代碼,以瞭解幕後的一些事情。Laravel 4:我怎麼理解它是如何工作的?

但是現在在Laravel 4,我不知道從哪裏開始或者如何理解這一切。我在哪裏可以瞭解Laravel 4的所有幕後故事?

舉例:我想知道DB::insert()是否返回插入行的ID。所以我開始尋找。 1.我找到了「封裝」數據庫的Illuminate \ Support \ Facades \ Facade類。 2. resolveFacadeInstance函數被調用,然後我試圖打印這些數組,但我的電腦掛起: - /。我相信這會導致更多的課程,我不明白。

有沒有一種方法可以嘗試學習Laravel 4的內部運作?也許堆棧跟蹤?

+1

可能有助於在不久的將來:http://area51.stackexchange.com/proposals/46607/laravel – Kriem

+2

刪除建議... – Tebe

回答

14

facade類只是一個過濾器類,允許您像靜態一樣調用方法。 對於門面映射到這裏:http://laravel.com/docs/facades#facade-class-reference

的出發點,充分了解laravel的內部運作應該開始:

/public/index.php 

您可以按照程序的邏輯,注意到需要start.php,它加載它可以在這裏找到「應用程序」的一個實例:

/vendor/laravel/framework/src/Illuminate/Foundation/Application.php 
+0

嗯,這不是很多,但它是一個開始:) –

1

您可以檢查出Laravel 4這裏的早期文檔:http://four.laravel.com/ - 這應該給你一個很好的起點

+1

這是關於如何使用Laravel的文檔,而不是關於內部工作的文檔。 –

1

實際的Laravel 4代碼在文件中有詳細記錄。如果你想了解內部工作,那麼打開源代碼文件並閱讀註釋。例如,我在/vendor/laravel/framework/src/Illuminate/Foundation/Application.php中查找了DB :: insert()代碼。

/** 
* Run an insert statement against the database. 
* 
* @param string $query 
* @param array $bindings 
* @return bool 
*/ 
public function insert($query, $bindings = array()) 
{ 
    return $this->statement($query, $bindings); 
} 

好了,這是調用函數的聲明,所以我在相同的代碼/類搜索功能聲明:

/** 
* Execute an SQL statement and return the boolean result. 
* 
* @param string $query 
* @param array $bindings 
* @return bool 
*/ 
public function statement($query, $bindings = array()) 
{ 
    return $this->run($query, $bindings, function($me, $query, $bindings) 
    { 
     if ($me->pretending()) return true; 

     $bindings = $me->prepareBindings($bindings); 

     return $me->getPdo()->prepare($query)->execute($bindings); 
    }); 
} 

現在,我們可以看到,這個返回基於註釋的布爾結果在代碼上方。

4

This Tuts+ video顯示了幾種找出哪些課程實際上正在進行的工作。

例如爲:

$root = get_class(DB::getFacadeRoot()); 
var_dump($root); 
0

如果來自Laravel 3 this article是給你的。之後,您應該閱讀該系列的other tutorials

作者注:

本文應列出一些以Laravel 3個版本和即將推出的版本4熊之間的心靈 更重要的變化,這是不是所有的變化。隨着Laravel 4的發佈接近 我會保持這篇文章是最新的。如果您對 Laravel 4有任何問題,請跳到Freenode上的#laravel。在這個時候,我們想 喜歡讓人們不要在論壇上發佈幫助主題。

相關問題