首先有几项配置:config/app.php
在运行时候动态添加函数
laravel 的生命周期主要分为 3 个主要阶段:
入口文件实现的代码:
Laravel Active 用全新的API重写,并以新的主版本发布。这个文档解释了新API,并给出了一些例子。
原文地址 : 深入探討 Service Provider
Service Provider 是 Laravel 管理 Package 的核心技术
Laravel 提供了 service container
让我们方便实现 依赖注入,而service provider
则是我们注册及管理 service container 的地方。
事实上 Laravel 内部所有的核心组件都是使用 service provider 统一管理,除了可以用来管理 package 外,也可以用来管理自己写的物件。
Fatal error: Uncaught exception ‘ReflectionException’ with message ‘Class log does not exist’ in /Users/freek/dev/laravel/vendor/laravel/framework/src/Illuminate/Container/Container.php:776
出现这种问题的原因是不能够加载 log 方法. 原因是在加载的时候会加载 config 文件的数据, 而 config 文件中的配置是批量加载的, 所以在自己加载的时候 config 文件的写法不支持自定义的函数变量/ 常量/ 自定义方法.
所以从配置文件入手, 删除未加载的配置文件, 删除未导入包的配置文件.
这种问题一般出现在 复制项目, 并且删除了包的情况下.
Laravel 中间件提供了一种方便的机制来过滤进入应用的 HTTP 请求。
例如,Laravel 内置了一个中间件来验证用户的身份认证。如果用户没有通过身份认证,中间件会将用户重定向到登录界面。但是,如果用户被认证,中间件将允许该请求进一步进入该应用。
Laravel 自带了一些中间件,包括身份验证、CSRF 保护等。所有这些中间件都位于** app/Http/Middleware**``** **目录。
原文地址: Laravel Mix Docs
ps:这个版本是 3.0 文档, 大部分功能和 4.0 一致
原文地址 :
http://mattstauffer.co/blog/laravel-5.0-event-scheduling
Laravel 5 新增了一个框架内置的 cron 风格的令人难以置信的调度程序(与 Indatus 的 Dispatcher 类似)。只要在服务器上设置一个每分钟调用 artisan schedule:run
的 cron job, 一切就准备就绪了。
Artisan 是 Laravel 的命令行接口的名称,它提供了许多实用的命令来帮助你开发 Laravel 应用,它由强大的 Symfony Console 组件所驱动。
可以使用 list
命令来列出所有可用的 Artisan 命令:
本文译自 Matt Stauffer 的系列文章.
如果你关注我的博客有段时间了,那你应该曾经见过我在 Laravel 环境检测问题上的各种尝试,特别使用环境变量进行检测这方面。例子
感谢 Laravel 5, 它极大地简化了环境检测环节。在 4.x 版的时候,你要创建多个基于运行环境名称的环境配置文件(比如 .env.php
, .env.local.php
等)。老实说,我从来用过这个功能。但我觉得理论上你应该会把所有环境配置文件提交到代码库。但由于我们从来不提交任何环境配置文件,所以这种区分环境的手段毫无用处,而且它还会造成环境配置文件的延迟加载,因为只有检测到运行于什么环境之后,它才能进行相应的配置文件加载。
本文译自 Matt Stauffer 的系列文章.
Laravel 5.0 中, 容器可以对其解析的方法进行自动分析, 然后根据类型限制把方法所需要的依赖项自动注入. 本文将介绍这一机制的原理, 何时解析, 如何注入等.
本文译自 Matt Stauffer 的系列文章.
在 PHP 代码中进行性能优化并非总是我们优先考虑的问题. 但是我们对后端代码的性能优化–特别是在一些很复杂的操作上–可以对网站的请求时间产生几十甚至几百毫秒的影响. 看上去不算很多, 但是几百毫秒的差异对于你的应用的用户感知速度来说可能意味着巨大的差异(链接可能需要扶墙访问).
你可能没有注意到, 在 Laravel 4 以及更老版本中, 路由逻辑是性能上的一个瓶颈–特别是对于有很多路由定义的应用而言. 一个只有几百条路由定义的 Laravel 站点, 框架光注册路由就需要半秒多的时间. 不过以后不用担心这个问题了, 因为 Laravel 5 引入了 路由缓存(route caching), 可以大大优化路由的性能(闭包方式定义的路由不能缓存, 所以该把所有的闭包路由定义都移到控制器中了).
本文译自 Matt Stauffer 的系列文章.
在 Laravel 5.0 版本中, FileSystem 类不再只是与本地文件系统进行交互, 而是可以用于 S3 和 Rackspace 的存储 API, 但使用方法很简单. 这是基于 Frank de Jonge 的 Flysystem 实现的一个简单的接口.
这意味着开发者可以像从前操作本地文件存储那样编写代码:
/** ``* 存储 Thing 到文件中 ``* ``* @param Thing $thing ``* @param string $filename ``*/ public function saveThing(Thing ``$thing``, ``$filename``) { ``File::put(``'uploads/' . ``$filename``, ``$thing``); } |
---|
在 Laravel 5.0 中, 可以随时通过修改生产环境下的应用配置文件, 无缝切换到外部的云存储服务(目前仅支持 S3 和 Rackspace, 本文以 S3 为例), 无需对上面的代码做任何修改.
本文基于 laravel 6.x
本文译自 Matt Stauffer 的系列文章.
如果你有阅读我之前的 Laravel 5.0 系列文章,你可能已经注意到路由过滤器(route filters)的变化:它们先是移到了单独的目录和类结构,然后就莫名其妙地消失了。你可能还留意到在原本应该是路由过滤器的地方,变成了对 Middleware 的引用。
实际上给 Laravel 应用添加自定义的 Middleware 在以前的版本中就有了。 Chris Fidao 的 HTTP Middleware in Laravel 4.1 对 middleware 做了全面的介绍,包括 middleware 在 Laravel 4.1 版本中的工作机制。
提示:过滤器在 Laravel 核心代码中依然存在,所以你依然可以使用。但是在需要对路由进行修饰时,更推荐采用的是 middleware.