修改默认日志位置 我们平常的开发中可能一直把laravel的日志文件放在默认位置不会有什么影响,但如果我们的项目上线时是全量部署,每次部署都是git中最新的代码,那这个时候每次都会清空我们的日志,显示这不是我们所期望的...,好在laravel有提供我们修改的方法。...模式下的Monolog处理程序 * * @param \Illuminate\Contracts\Foundation\Application $app * @param \Illuminate...(); } } 配置日志存放路径# 在.env中增加 APP_NAME=phphub 在config/app.php中增加 /** * 应用程序名称 */ 'name' = env('APP_NAME...以上这篇Laravel 修改默认日志文件名称和位置的例子就是小编分享给大家的全部内容了,希望能给大家一个参考。
HTTP 请求前调用路由上应用的中间件实现过滤请求的目的: namespace Illuminate\Foundation\Http; ... class Kernel implements KernelContract...[] : $this->middleware) ->then($this->dispatchToRouter()); } /*引导启动Laravel应用程序 1...终止应用程序 响应发送后,HTTP内核会调用 terminable中间件做一些后续的处理工作。比如,Laravel 内置的「session」中间件会在响应发送到浏览器之后将会话数据写入存储器中。...之前的文章里一直在说服务容器是 Laravel框架的核心,这篇文章讲讲 Laravel的 HTTP内核有的人可能会问到底哪个才是 Laravel的核心,实际上服务容器是一切的基础,框架中每时每刻都在用到它提供的依赖注入和控制反转的能力...Laravel 刚刚启动时先启动容器对象 Application,然后加载配置、通过 ServiceProvider往容器对象里填充一些对象为接下来处理请求做准备,但是真正干活的是 Kernel, Application
Laravel文档中对Facades的解释如下: Facades 为应用程序的 服务容器 中可用的类提供了一个「静态」接口。...类我们就能够方便地使用router服务中提供的各种服务,而其中涉及到的服务解析完全是隐式地由Laravel完成的,这在一定程度上让应用程序代码变的简洁了不少。...下面我们会大概看一下Facades从被注册进Laravel框架到被应用程序使用这中间的流程。...[] : $this->middleware) ->then($this->dispatchToRouter()); } //引导启动Laravel应用程序 public...* * @param \Illuminate\Contracts\Foundation\Application $app * @return void */
Laravel在启动时会加载项目中的 .env文件。对于应用程序运行的环境来说,不同的环境有不同的配置通常是很有用的。...app.php 中使用 Application实例的 useEnvironmentPath方法: $app = new Illuminate\Foundation\Application( realpath...实例的 loadEnvironmentFrom方法: $app = new Illuminate\Foundation\Application( realpath(__DIR__...我们来看一下 \Illuminate\Foundation\Bootstrap\LoadEnvironmentVariables的源码来分析下 Laravel是怎么加载 env中的配置的。 <?...在项目中读取env配置 在Laravel应用程序中可以使用 env()函数去读取环境变量的值,比如获取数据库的HOST: env('DB_HOST`, 'localhost'); 传递给 env 函数的第二个值是
* 为HTTP请求提供应用程序。 ... * 获取实例 * @return \Illuminate\Contracts\Foundation\Application */ public function getApplication...重点看 app 属性,app 属性实际上是一个 Illuminate\Foundation\Application 的实例,这个实例包含了非常多的属性值,挑选其中主要的内容:loadedProviders...常见问题quick.app 快速创建项目失败比较简单但是容易忽略的问题,Largon 快速构建项目实际上用的是composer,如果本地的composer --version找不到对应配置就会存在报错的情况...Composer镜像仓库问题,国内的镜像目前普遍是存在问题的,所以我们需要把镜像切换回国外(PHP在国内现在确实一潭死水)。
另外,在类的内部还声明了 mapXXX() 系列方法,这些方法是用于定义应用程序的路由的实际操作,有关 map 系列函数的解读会在稍后进一步讲解。...最终回到由 App\Providers\RouteServiceProvider 类中定义的 map 方法执行路由载入处理。 学习到这,大家对路由的整个加载过程应该已经建立起一个比较宏观上的概念了。...深入研究 map 定义路由系列方法 建立起宏观上的路由加载流程后,我们百尺竿头更进一步,继续深入到 mapXXX() 系列方法,因为这些方法才是实际去执行路由加载处理的组件。...如果你有了解过 Laravel 生命周期的话,应该知道所有的 HTTP 请求都是由 Illuminate\Foundation\Http\kernel::class 内核处理的,而捕获 HTTP 请求操作位于项目的入口文件...将 HTTP 请求分发到应用程序。
中已经实现的类 Collection类实现/vendor/laravel/framework/src/Illuminate/Support/Collection.php 据说:facade来源于法语,本质可以理解为外表高大上...facade代码简单过 index.php中注册HttpKernel,然后 $app(Illuminate/Foundation/Application.php)-> bootstrapWith (arrray...~ 以下代码及注释,来自于 /vendor/laravel/framework/src/Illuminate/Foundation/Application.php public function bootstrapWith...他们在 /vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap中有具体体现.注意他需要一个参数这个参数就是...那么接着来的问题是,xxxServiceProvider又是什么时候调用的?
boot 方法在处理一个路由载入的问题: 判断是否已有路由缓存; 有路由缓存,则直接载入路由缓存; 无路由缓存,执行 map 方法载入路由。...延迟绑定服务提供者 对于一个项目来说,除了要让它跑起来,往往我们还需要关注它的性能问题。...为了解决这个问题 Laravel 内置支持 延迟服务提供者 功能,启用时延迟功能后,当它真正需要注册绑定时才会执行 register 方法,这样就可以提升我们服务的性能了。...* * @see https://github.com/laravel/framework/blob/5.6/src/Illuminate/Foundation/Application.php...所以我们需要进入到 Illuminate\Foundation\Application 容器中探索 make 解析的一些细节。
Laravel在入口index.php时先加载Composer加载器:Laravel5.2之Composer自动加载,然后进行Application的实例化:Laravel5.3之IoC Container...()来往laravel.log里打印log值,当然在应用程序中经常\Log::info(),\Log::warning(),\Log::debug()来打印变量值,即Writer类中定义的的方法。...注册Facades 在路由文件中经常会出现Route::get()这样的写法,但实际上并没有Route类,Route只是\Illuminate\Support\Facades\Route::class外观类的别名...,所以Route::get()实际上就是IlluminateSupportFacadesRoute::get(),看下AliasLoader类的getInstance()和register()方法源码:...OK, 程序启动所做的准备工作就聊完了,过程不复杂,只需一步步拆解就能基本清楚Laravel启动时做了哪些具体工作。 总结:本文主要学习了Laravel启动时做的七步准备工作:1.
这篇文章我们来聊聊 「Laravel 生命周期」 这个主题。虽然网络上已经有很多关于这个主题的探讨,但这个主题依然值得我们去研究和学习。...* * @see https://github.com/laravel/framework/blob/5.6/src/Illuminate/Foundation/Application.php...进一步挖掘 Illuminate\Foundation\Http\Kernel 内核的 __construct(Illuminate\Contracts\Foundation\Application...,基本都是围绕在配置变量、注册服务等运行环境的构建上,构建完成后才是真刀真枪的来处理一个「HTTP 请求」。...最终还是要看 Illuminate\Foundation\Application 的 bootstrapWith() 方法究竟如何来启动这些引导程序的。
Laravel在入口index.php时先加载Composer加载器:Laravel学习笔记之Composer自动加载,然后进行Application的实例化:Laravel学习笔记之IoC Container...()来往laravel.log里打印log值,当然在应用程序中经常\Log::info(),\Log::warning(),\Log::debug()来打印变量值,即Writer类中定义的的方法。...注册Facades 在路由文件中经常会出现Route::get()这样的写法,但实际上并没有Route类,Route只是\Illuminate\Support\Facades\Route::class外观类的别名...,所以Route::get()实际上就是IlluminateSupportFacadesRoute::get(),看下AliasLoader类的getInstance()和register()方法源码:...OK, 程序启动所做的准备工作就聊完了,过程不复杂,只需一步步拆解就能基本清楚Laravel启动时做了哪些具体工作。 总结:本文主要学习了Laravel启动时做的七步准备工作:1.
框架启动与服务容器源码 了解了服务容器的原理,要处理的问题,以及 Laravel 中如何使用服务容器以及服务提供者之后,我们就进入到了源码的学习中。...到这里,你也一定会想到了,这个 Illuminate\Foundation\Application 就是我们整个 Laravel 框架的核心,也就是服务容器实现的核心。...Container 服务容器 打开 laravel/framework/src/Illuminate/Foundation/Application.php 文件,我们可以看到这个类继承的是一个叫做 Container.../laravel/framework/src/Illuminate/Foundation/Application.php 中的 bootstrapWith() 方法来加载这些预定义的服务提供者。.../laravel/framework/src/Illuminate/Foundation/Application.php 中的 registerConfiguredProviders() 方法。
在本文中,我们将探讨如何构建和测试使用Laravel进行身份验证的强大API。我们将使用Laravel 5.4,所有的代码都可以在GitHub上参考。...更新动作:PUT vs POST RESTful API中有很多争论的问题,对于使用POST,PATCH或者PUT更新哪个是最好的,或者创建动作最好留给PUT动词这种问题有很多的意见。...404: 未找到。当没有找到资源时,这将由Laravel自动返回。 500: 内部服务器错误。理想情况下,你不会明确地返回这个,但如果有意外的中断,这是你的用户将要收到的。 503: 暂停服务。...,在测试期间,Laravel应用程序不会在新的请求上再次实例化。...Laravel肯定提高了我对PHP的经验,并且易于使用测试巩固了我对该框架的兴趣。这不完美,但它足够灵活,可以让您解决问题。
什么是依赖注入 应用程序对需要使用的依赖「插件」在编译(编码)阶段仅依赖于接口的定义,到运行阶段由一个独立的组装模块(容器)完成对实现类的实例化工作,并将其「注射」到应用程序中称之为「依赖注入」。...节选一段「深度挖掘 Laravel 生命周期」一文中有关服务容器的内容: 创建应用实例即实例化 Illuminate\Foundation\Application 这个服务容器,后续我们称其为 APP...所有的这些都需要我们深入到 Illuminate\Foundation\Application 类的内部: /** * Create a new Illuminate application...对于 Laravel 服务容器来讲,其内部实现上无论是 bind、singleton、tag 还是 extend 它们的基本原理大致类似。...我们知道绑定方法定义在 Laravel 服务容器 Illuminate\Foundation\Application 类内,而 Application继承自 Illuminate\Container\Container
代码部署上的很多问题,我们的 sls 也是通过这玩意下载的 PHP:不多说,最好的语言 Composer:PHP 世界的包管理工具 Composer ,类似 npm Laravel:Laravel 是一套简洁...app.php 文件,在 $app = new Illuminate\Foundation\Application 后添加: app->useStoragePath($_ENV['APP_STORAGE...container for the system binding all of the various parts. | */ $app = new Illuminate\Foundation\Application...container for the system binding all of the various parts. | */ $app = new Illuminate\Foundation\Application...至此,我们的 Laravel 配置即可大功告成。 5.
值得庆幸的是,Laravel 可以轻松保护您的应用程序免受跨站点请求伪造(CSRF)攻击。...没有 CSRF 保护,恶意网站可能会创建一个 HTML 表单,指向您的应用程序 /user/email 路由,并提交恶意用户自己的电子邮件地址: <form action="https://your-<em>application</em>.com...,他们<em>的</em>电子邮件地址就会在您<em>的</em><em>应用程序</em>中更改。...以上摘自 <em>Laravel</em> 文档;下面自我理解一下: 表单是可以跨域<em>的</em>。 用户打开了浏览器,有两个标签页,一个是您<em>的</em>网站(your-<em>application</em>.com),一个是恶意网站(怎么打开<em>的</em>?...CSRF 攻击关键在于 cookie,如果 cookie 里不含登陆令牌,你把登录令牌放到 header 里就没<em>问题</em>。因为 CSRF 所利用<em>的</em> form 和四个特殊 tag 都无法添加 header。
今天我们从Laravel启动的第一步开始讲起。.../bootstrap/app.php'; 获取app是laravel启动的关键,也可以说app是用于启动laravel内核的钥匙?。...行代码,这则是laravel的优雅之处。...而$app这个在服务提供者的核心变量则就是Application实例化所得,而你在服务提供者内使用的make,bind,singleton来自他的父类Container,都说容器是laravel的核心概念...这块的概念后续我们会详细的讲解。 $app = new Illuminate\Foundation\Application( realpath(__DIR__.
服务提供器是所有 Laravel 应用程序引导中心。...你的应用程序自定义的服务、第三方资源包提供的服务以及 Laravel 的所有核心服务都是通过服务提供器进行注册(register)和引导(boot)的。...首先laravel注册和引导应用需要的服务是发生在寻找路由处理客户端请求之前的Bootstrap阶段的,在框架的入口文件里我们可以看到,框架在实例化了Application对象后从服务容器中解析出了HTTP..., 在这之前有一个BootStrap阶段通过执行下面列出的框架预定义脚手架的bootstrap方法来引导启动应用程序的各个部分从而完成Laravel应用程序的引导 1....BootProviders 启动Providers namespace Illuminate\Foundation; class Application extends Container
Laravel 目录结构与配置 Laravel 的目录结构相对来说在初始状态下会更丰富一些,除了传统的控制器之外,也帮我们准备好了脚本、中间件之类的代码文件的目录,基本上是可以达到上手直接使用的。...storage 目录是用于存储应用程序生成的各类文件,包括缓存、日志等信息。tests 目录包含自动化测试相关的内容。 在这些目录中,我们再重点看一下 app 目录中包含的内容。...// laravel/framework/src/Illuminate/Foundation/Application.php foreach ($bootstrappers as $bootstrapper.../framework/src/Illuminate/Foundation/Http/Kernel.php 中的类变量 // laravel/framework/src/Illuminate/Foundation.../Http/Kernel.php /** * The bootstrap classes for the application
上一篇文章我们介绍了Laravel的HTTP内核,详细概述了网络请求从进入应用到应用处理完请求返回HTTP响应整个生命周期中HTTP内核是如何调动Laravel各个核心组件来完成任务的。...php // 第一部分: 创建应用实例 $app = new Illuminate\Foundation\Application( realpath(__DIR__...., ]; 数组中包括的引导程序基本上和HTTP内核中定义的引导程序一样, 都是应用在初始化阶段要进行的环境变量、配置文件加载、注册异常处理器、设置Console请求、注册应用中的服务容器、Facade和启动服务...执行命令 执行命令是通过Console Application来执行的,它继承自Symfony框架的 Symfony\Component\Console\Application类, 通过对应的run方法来执行命令...Laravel中定义的各种命令类程序中,然后在命令类里面我们就可以写其他程序一样自由地使用Laravel中的各个组件和注册到服务容器里的服务了。
领取专属 10元无门槛券
手把手带您无忧上云