目录
laravel基础教程 —— 配置
访问配置值
环境配置
确定当前环境
缓存配置信息
维护模式
维护模式响应模板
维护模式 & 队列
备选方案到维护模式
首页 后端开发 php教程 laravel基础教程 -- 配置

laravel基础教程 -- 配置

Jun 23, 2016 pm 01:09 PM

laravel基础教程 —— 配置

所有配置文件都被保存在config目录下,并且每个配置文件里的配置项都有文档标注。

访问配置值

config 全局帮助方法被提供在vendor/laravel/framework/src/Illuminate/Foundation/helpers.php 文件中,该函数允许使用 . 语法来获取文件内的配置项值。

$value = config('app.timezone');
登录后复制

你也可以在config函数传递第二个参数作为默认值,当找不到该配置项时返回默认值.

$value = config('app.timezone', 'Asia/Shanghai');
登录后复制

设置配置项的值:

config(['app.timezone' => 'Asia/Shanghai']);
登录后复制

环境配置

我们经常希望开发环境和生产环境具有不同的配置。比如说你在本地开发环境使用不同的缓存驱动,而laravel基于环境的配置使之非常容易。

laravel使用了DotEnv类库来构建基于环境的配置,默认的基于环境的配置信息在根目录下的.env文件中,如果你是通过composer的方式安装的laravel,那么它会自动的将.env.example文件复制并重命名为.env, 如果不是你则需要手动做了。如果你每增加一个基于环境的配置项,你最好在.env.example中增加相同的配置项,这样在多人协作中别人可以根据.env.example理解你的配置信息.

每当程序接收到request请求时,应用程序会自动装载.env文件,并将配置信息封装在全局变量$_ENV中,当然你也可以通过全局辅助函数env()来进行获取环境配置项信息并将其设置在你的其它配置文件中,事实上,laravel已经在部分配置文件中使用这种这种方式进行配置。

'debug' => env('APP_DEBUG', false),
登录后复制

env函数中的第二个参数为配置项的默认值,当环境配置文件.env中没有该配置项时会自动使用默认值。

另外你的.env配置环境不应该提交到版本控制器中,因为其它服务器环境或者开发者环境可能需要引入不同的环境配置。比如生产环境不应该开启debug, 不同的开发者的本地数据库配置信息可能不同。

如果你是在一个团队中做开发,你应该在.env.example文件中引入你增加的环境配置信息,并提交给其它开发者知道,这样他们就能够理解使用你开发的部分应该引入哪些配置信息。

确定当前环境

当前环境是定义在.env文件中的APP_ENV变量里的,你可以通过App facade 的 environment 函数来获取:

$environment = App::environment();
登录后复制

当然你也可以通过 全局方法 env 或 app 来获取:

$environment = env('APP_ENV');# or$environment = app()->environment();
登录后复制

有时候我们需要特别识别一下当前环境是哪种环境,并根据不同的环境执行不同的业务逻辑,这时候就需要通过environment函数来进行判断匹配了,当然你可以在其中传递一个或多个环境参数,只要匹配到其中任何一个都会返回true:

if (App::environment('local')) {  // if env('APP_ENV') === 'local'}if (App::environment('local', 'staging')) {  // env('APP_ENV') === 'local' || env('APP_ENV') === 'staging'}
登录后复制

缓存配置信息

在config目录下有很多配置文件,配置文件中有不同的配置信息,为了启动程序更为迅速,我们可以在开发环境中将这些配置信息集中到一个配置文件中,这样,程序在被访问时,不会每次都要加载N个文件了,我们可以通过artisan的 config:cache命令 来做这件事情。所有配置文件被整合在一个文件里并被程序自动加载。

当然,在开发环境并不建议这么做,因为开发环境我们可能会频繁的更改配置信息,这样为了使配置信息及时生效我们不得不频繁的运行 php artisan config:cache命令, 偶尔我们会忘记执行命令。生产环境缓存配置文件应该是常态,并且应该在版本发布时执行缓存配置文件命令重新生成缓存配置信息。你应该将其做为自动发布的一部分。

维护模式

laravel提供了维护模式,维护模式在开启时,所有的访问请求都会被返回某个视图,这个视图是可以自定义的。如果维护模式开启,则每个请求都会返回 503 状态码。开启维护模式的方法:

php artisan down
登录后复制

关闭维护模式的方法:

php artisan up
登录后复制

维护模式响应模板

维护模式响应的视图模板存放在resources/views/errors/503.blade.php, 你可以自由的修改。

维护模式 & 队列

在维护模式开启时,队列工作将会暂停执行,当维护模式关闭时,队列将继续进行处理工作。

备选方案到维护模式

由于开启维护模式需要关闭应用程序一段时间,所以你也许可以考虑像Envoyer这种不需要关闭应用程序的持续集成服务。

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

在Laravel中使用Flash会话数据 在Laravel中使用Flash会话数据 Mar 12, 2025 pm 05:08 PM

Laravel使用其直观的闪存方法简化了处理临时会话数据。这非常适合在您的应用程序中显示简短的消息,警报或通知。 默认情况下,数据仅针对后续请求: $请求 -

php中的卷曲:如何在REST API中使用PHP卷曲扩展 php中的卷曲:如何在REST API中使用PHP卷曲扩展 Mar 14, 2025 am 11:42 AM

PHP客户端URL(curl)扩展是开发人员的强大工具,可以与远程服务器和REST API无缝交互。通过利用Libcurl(备受尊敬的多协议文件传输库),PHP curl促进了有效的执行

简化的HTTP响应在Laravel测试中模拟了 简化的HTTP响应在Laravel测试中模拟了 Mar 12, 2025 pm 05:09 PM

Laravel 提供简洁的 HTTP 响应模拟语法,简化了 HTTP 交互测试。这种方法显着减少了代码冗余,同时使您的测试模拟更直观。 基本实现提供了多种响应类型快捷方式: use Illuminate\Support\Facades\Http; Http::fake([ 'google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

在Codecanyon上的12个最佳PHP聊天脚本 在Codecanyon上的12个最佳PHP聊天脚本 Mar 13, 2025 pm 12:08 PM

您是否想为客户最紧迫的问题提供实时的即时解决方案? 实时聊天使您可以与客户进行实时对话,并立即解决他们的问题。它允许您为您的自定义提供更快的服务

解释PHP中晚期静态结合的概念。 解释PHP中晚期静态结合的概念。 Mar 21, 2025 pm 01:33 PM

文章讨论了PHP 5.3中引入的PHP中的晚期静态结合(LSB),从而允许静态方法的运行时分辨率调用以获得更灵活的继承。 LSB的实用应用和潜在的触摸

自定义/扩展框架:如何添加自定义功能。 自定义/扩展框架:如何添加自定义功能。 Mar 28, 2025 pm 05:12 PM

本文讨论了将自定义功能添加到框架上,专注于理解体系结构,识别扩展点以及集成和调试的最佳实践。

框架安全功能:防止漏洞。 框架安全功能:防止漏洞。 Mar 28, 2025 pm 05:11 PM

文章讨论了框架中的基本安全功能,以防止漏洞,包括输入验证,身份验证和常规更新。

See all articles