Larvae的配置都在config目录下非常方便管理,可以通过config()帮助函数来实现对配置项目的设置和获取,同时用 DotEnv 来实现项目内环境变量的控制,非常强大和方便。我们在日常开发中如果没有使用Laravel框架,比如写一些脚本,或者自己写的项目框架,但是想集成这样的配置管理。这里就讲讲如何集成illuminate/config 到自己的项目中实现Laravel那种config配置。 首先通过composer来安装illuminate/config 和 vlucas/phpdotenv,composer.json如下: { "require": { "illuminate/config": "^5.2", "vlucas/phpdotenv": "^2.3" }, "autoload": { "psr-4": { "App\\": "app/" } } } 创建.…

我们在Laravel Blade模板中经常在循环输出前先判断一下集合是否有值,然后再foreach 比如: @if ($posts->count()) @foreach ($posts as $post) <p>This is post {{ $user->id }}</p> @endforeach @else <p>No posts found.</p>…

Docker是什么? Docker是 Docker.Inc 公司开源的一个基于 LXC技术之上构建的Container容器引擎,基于Go语言并遵从Apache2.0协议开源。 开发者可以搭建他们的应用仅仅一次,就能保证让这个应用保持一致的跑在任何地方。运营人员可以将他们的服务器配置一遍,就能跑任何应用。 What is Docker’s architecture? Docker uses a client-server architecture. The Docker client talks to the Dockerdaemon, which does the heavy lifting of…

这两天整了个Ubuntu(14.04 LTS)上安装配置Nginx,MySQL,PHP环境的一键安装的shell脚本,一劳永逸。 Github:ubuntu-lnmp-installer 包括的软件包: Jemalloc(4.2.0) PHP(7.07) MySQL(5.6.29) Nignx(1.10.0) Redis(3.2.0) Node.js(5.8.0)…

Laravel 集成 Monolog 来做日志处理,Monolog非常强大,也容易扩展,其实它本身已经支持很多Handler了,你可以把日志发送到邮件或者其他日志收集服务器或者系统中,因为我们团队使用Bearychat 作为团队沟通工具,所以把Laravel项目的实时错误日志推送到Bearychat的一个讨论组中,方便组员迅速发现异常和解决问题 ,其实很简单没多少行代码就搞定了。 首先创建BearyChatHandler <?php namespace App; use Monolog\Handler\AbstractProcessingHandler; use Monolog\Logger; use Monolog\Handler\Curl; class BearyChatHandler extends AbstractProcessingHandler { private $data;…

在上一篇的《Mac极简的开发环境Laravel Valet实践》中提到Valet是利用系统后台启用的Caddy来提供web服务的,这个Caddy是个web server?今天玩了一下,非常赞,当然简单粗暴是有点标题党了。 Caddy是一个Go写的服务器软件,官方的宣传语“The HTTP/2 web server with automatic HTTPS”以及“Serve The Web Like It's 2016”简明表达了这个软件的优点和趋势,它拥有基本的apache或者nginx有的web server模块,同时还有一些很有特色的功能,比如: HTTP/2 Automatic HTTPS…

Laravel Valet 是一个Mac下面的极简的开发环境,不但可以本地开发,还可以分享到公网访问,当你的电脑开机后会在后台一直启动 Caddy ,Valet通过 DnsMasq 把所有的 .dev域名指向你本地安装的站点,比如站点所在目录blog, 通过浏览器访问blog.dev就会自动访问到blog了。分享到公网其实主要依靠ngrok来实现的。 先来安装一下 更新Homebrew brew update 确保brew services可用 brew services list 安装php70如果没有安装的话 brew install php70 确保~/.composer/vendor/bin已经添加到系统PATH目录中 安装Valet composer global…

Laravel 的分页很方便,其实扩展起来也挺容易的,下面就来做个示例,扩展一下paginate()和 simplePaginate()方法,来实现我们自定义分页样式,比如显示"上一页"和"下一页",而不是"《"和"》",当然扩展的方法掌握了你就可以肆无忌惮的扩展一个你想要的分页了,比如跳转到某一页,分页显示一共多少记录,当前显示的记录范围等等巴拉巴拉的。。。 5.1和5.2应该是同样的方法,我这里用的是5.2的版本。文档告诉我们Paginator 对应于查询语句构造器和 Eloquent 的 simplePaginate 方法,而 LengthAwarePaginator则等同于 paginate 方法。那我们还是来看下源码,…

Larval 自带 Auth 密码重置源码解析及扩展实现手机号密码找回 Larval技术群小伙伴问密码重置时PasswordController中需要设置的$broker是干嘛用的,正好来写一下Laravel 中Auth的ResetsPasswords,以及实践一下扩展,所以大体这篇博客写写: 密码重置源码分析 实现自定义邮件发送方式进行密码重置,比如使用第三方或者自己发送邮件方式找回 实现手机号密码重置 首先来看一下PasswordController 中的 ResetsPasswords trait trait ResetsPasswords { use RedirectsUsers; public function getEmail() { return $this->showLinkRequestForm(); } /** * 这里就是设置密码重置邮件内容的 * * @return \Illuminate\Http\Response */ public…

Larval 5.2的默认Auth登陆传入邮件和用户密码到attempt 方法来认证,通过email的值获取,如果用户被找到,经哈希运算后存储在数据中的password将会和传递过来的经哈希运算处理的passwrod值进行比较。如果两个经哈希运算的密码相匹配那么将会为这个用户开启一个认证Session。 但是往往我们一些老的系统是通过salt+passwrod来认证的,现在重构迁移到Laravel框架中,那么密码认证如何不用默认的passwrod的方式而用salt+password的方式认证? 要解决问题,我们最好还是先要弄明白根源,顺藤摸瓜 首先看一下Laravel默认如何做密码验证的,看看Auth::guard($this->getGuard())->attempt($credentials)方法做了什么: Illuminate/Contracts/Auth/StatefulGuard.php namespace Illuminate\Contracts\…