8

我在一个项目中使用 Laravel 3,这很开心。我还多次查看源代码,以了解某些事情在幕后是如何工作的。

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

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

有没有办法可以尝试学习 Laravel 4 的内部工作原理?也许堆栈跟踪?

4

5 回答 5

14

外观类只是一个过滤器类,允许您调用方法,就好像它们是静态的一样。对于外观映射,请访问此处: http: //laravel.com/docs/facades#facade-class-reference

充分理解 laravel 内部工作的起点应该是:

/public/index.php

您可以遵循程序的逻辑,注意需要 start.php,它会加载“应用程序”的实例,该实例位于此处:

/vendor/laravel/framework/src/Illuminate/Foundation/Application.php
于 2013-01-15T23:29:30.840 回答
4

这个 Tuts+ 视频展示了几种找出哪个班级实际在做这项工作的方法。

例如:

$root = get_class(DB::getFacadeRoot());
var_dump($root);
于 2013-04-03T13:15:15.000 回答
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);
    });
}

我们现在可以看到,这会根据代码上方的注释返回布尔结果。

于 2013-01-22T15:44:25.290 回答
1

你可以在这里查看 Laravel 4 的早期文档:http://four.laravel.com/——应该会给你一个很好的起点

于 2013-01-16T00:59:04.560 回答
0

如果你来自 Laravel 3 ,这篇文章适合你。之后,您应该阅读该系列的其他教程

作者注:

本文应该概述 Laravel 版本 3 和即将发布的版本 4 之间的一些更重要的更改。请记住,这并不是所有更改。随着 Laravel 4 的发布越来越近,我会及时更新这篇文章。如果你对 Laravel 4 有任何问题,请跳到 Freenode 上的#laravel。此时,我们希望人们不要在论坛上发布帮助主题。

于 2013-05-07T20:51:36.777 回答