我在一个项目中使用Laravel 3,这是一种快乐。我还多次查看了源代码,看看幕后工作是如何工作的。
但现在在Laravel 4中,我不知道从哪里开始或如何理解这一切。我在哪里可以了解Laravel 4的幕后故事?
一个例子:我想知道DB::insert()
是否返回插入行的id。所以我开始搜索。
1.我找到了“封装”DB的Illuminate \ Support \ Facades \ Facade类。
2.调用resolveFacadeInstance函数,然后我尝试打印这些数组,但我的计算机挂起: - /。我相信这会导致更多我不理解的课程。
有没有办法可以尝试学习Laravel 4的内部工作原理?也许堆叠痕迹?
答案 0 :(得分:14)
facade类只是一个过滤器类,允许您调用方法,就好像它们是静态的一样。 对于外观映射,请转到此处:http://laravel.com/docs/facades#facade-class-reference
完全理解laravel内部运作的起点应该从以下开始:
/public/index.php
你可以按照程序的逻辑,注意到需要start.php,它会加载一个“Application”的实例,在这里找到:
/vendor/laravel/framework/src/Illuminate/Foundation/Application.php
答案 1 :(得分:4)
This Tuts+ video显示了几种方法可以找出哪个班级正在做这项工作。
E.g:
$root = get_class(DB::getFacadeRoot());
var_dump($root);
答案 2 :(得分:1)
你可以在这里查看Laravel 4的早期文档:http://four.laravel.com/ - 这应该会给你一个很好的起点
答案 3 :(得分: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 :(得分:0)
如果你来自Laravel 3 this article适合你。之后你应该阅读该系列的other tutorials。
作者注:
本文应概述Laravel在版本3和即将发布的版本4之间的一些更重要的更改。请记住 这不是所有的变化。随着Laravel 4的发布越来越近 我会把这篇文章保持最新。如果你有任何问题 Laravel 4请跳到Freenode的#laravel。这时候我们会 喜欢让人们不要在论坛上发布帮助主题。