Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 拉威尔4:我如何理解这一切是如何运作的?_Laravel_Laravel 4 - Fatal编程技术网

Laravel 拉威尔4:我如何理解这一切是如何运作的?

Laravel 拉威尔4:我如何理解这一切是如何运作的?,laravel,laravel-4,Laravel,Laravel 4,我在一个项目中使用了Laravel3,这是一种乐趣。我还多次查看了源代码,以了解一些东西在幕后是如何工作的 但现在在《拉威尔4》中,我不知道从哪里开始,也不知道如何理解这一切。我在哪里可以了解《拉威尔4》的所有幕后故事 举个例子:我想知道DB::insert()是否返回插入行的id。于是我开始寻找。 1.我找到了“封装”DB的Lightning\Support\Facades\Facade类。 2.resolveFacadeInstance函数被调用,然后我尝试打印这些数组,但我的计算机挂起:-

我在一个项目中使用了Laravel3,这是一种乐趣。我还多次查看了源代码,以了解一些东西在幕后是如何工作的

但现在在《拉威尔4》中,我不知道从哪里开始,也不知道如何理解这一切。我在哪里可以了解《拉威尔4》的所有幕后故事

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


有没有一种方法可以让我试着了解拉威尔4的内部工作原理?可能是堆栈跟踪?

facade类只是一个过滤器类,允许您像调用静态方法一样调用方法。 对于facade映射,请转到此处:

全面了解拉威尔内部工作原理的起点应始于:

/public/index.php
您可以按照程序的逻辑进行操作,注意需要start.php,它加载“应用程序”的一个实例,该实例位于以下位置:

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

您可以在此处查看Laravel 4的早期文档:–这将为您提供一个良好的起点

实际的Laravel 4代码在文件中有很好的文档记录。如果您想了解内部工作原理,请打开源代码文件并阅读注释。例如,我在/vendor/laravel/framework/src/illumb/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);
    });
}
现在我们可以看到,这将根据代码上方的注释返回布尔结果。

显示了几种方法,可以找出类实际在做什么工作

例如:


如果你来自拉威尔,3号是给你的。在那之后,你应该读那一系列的文章

作者注:

本文将概述在版本3和即将发布的版本4之间对Laravel进行的一些更重要的更改。牢记 这并不是所有的变化。随着Laravel 4的发布越来越近 我会不断更新这篇文章。如果你有什么问题 请跳到Freenode上。在这个时候,我们会 喜欢要求人们不要在论坛上发布帮助主题


嗯,虽然不多,但这只是一个开始:)这些是关于如何使用Laravel的文档,而不是关于内部工作的文档。在不久的将来可能会有所帮助:
$root = get_class(DB::getFacadeRoot());
var_dump($root);