Laravel 4:我怎么能理解它是如何工作的?

时间:2013-01-15 22:28:18

标签: laravel laravel-4

我在一个项目中使用Laravel 3,这是一种快乐。我还多次查看了源代码,看看幕后工作是如何工作的。

但现在在Laravel 4中,我不知道从哪里开始或如何理解这一切。我在哪里可以了解Laravel 4的幕后故事?

一个例子:我想知道DB::insert()是否返回插入行的id。所以我开始搜索。 1.我找到了“封装”DB的Illuminate \ Support \ Facades \ Facade类。 2.调用resolveFacadeInstance函数,然后我尝试打印这些数组,但我的计算机挂起: - /。我相信这会导致更多我不理解的课程。

有没有办法可以尝试学习Laravel 4的内部工作原理?也许堆叠痕迹?

5 个答案:

答案 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。这时候我们会   喜欢让人们不要在论坛上发布帮助主题。