hi!大家好。老高又开始折腾laravel了 :-D
(基于Laravel 5.2)
写在前面
此系列文章主要是记(瞎)录(扯)一些老高在研究 laravel 5.2 时的感悟。主要受众应该是和老高一样喜欢折腾的家伙们吧!
常规教程在这里Laravel 5.2 中文文档,在此要十分感谢Laravel 学院!没有他laravel在国内也不会这么普及(老高)。当然不要忘了Laravel还有一个子框架叫Luman,这个路人
框架也值得学习!
ps.Laravel老高去年就开始关注了,因为太忙(懒)了,所以一直没有深入学习这个框架。不过不要紧,该来的还是会来的。有问题请直接留言,老高会及(偶)时(然)回复你的!
惯例代码
代码里常见的用法,还有闭包的用法要习惯!
<?php
namespace App;
interface A
{
public function get();
}
var_dump(A::class);//string(5) "App\A"
php -r "var_dump((1==1) ? :false);" // bool(true)
php -r "var_dump((1==2) ? :false);" // bool(false)
安装
5.1 - 5.2的变化不是很激进,安装方法没有变化,所以安装其实没什么好说的,具体看这里Laravel 5.2 安装。laravel严重依赖的PHP的包管理系统Composer,是好事也是坏事,但总归是好事!(我到底在说啥?)
Cons: 需要理解包管理等一些列基础知识,如psr0-N(N目前已经到13了)、Namespace、自动加载类,理解起来会有一些门槛
Pros: 极大地提高了开发效率,让大家开发程序有了包的概念,简直不能再爽!
你可能还很需要Packagist / Composer 中国全量镜像以加速包下载。
ps.不要忘了初始化key什么的
配置
配置也没什么多说,老高最喜欢这个维护功能,有没有苹果发布新产品时的官网的感觉!
实现方式就是一句话而已!
php artisan down
基础
你需要理解请求、路由等概念,具体还是先看官方文档吧
artisan命令行工具
灵活运用artisan命令行工具,可以帮你提高100%的效率!不要怕这么多命令,多用就熟了。
php artisan
# 节选一点内容
Laravel Framework version 5.2.30
Usage:
command [options] [arguments]
Options:
-h, --help Display this help message
-q, --quiet Do not output any message
-V, --version Display this application version
--ansi Force ANSI output
--no-ansi Disable ANSI output
-n, --no-interaction Do not ask any interactive question
--env[=ENV] The environment the command should run under.
-v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
一些关于缓存的命令
// Remove the compiled class file
php artisan clear-compiled
// Flush the application cache
php artisan cache:clear
// Create a route cache file for faster route registration
php artisan route:cache
// List all registered routes
php artisan route:list
// Remove the route cache file
php artisan route:clear
// Clear all compiled view files
php artisan view:clear
中间件
Laravel的中间件功能很有意思,为了加深理解,大家可以参考下图:
上图来自米嘉 gobuildweb@Goper_China_2016
大家可以把一个web应用想成一颗洋葱,每个请求在进入货离开web系统时,都会通过Middleware的过滤,可以说有了Middleware,系统变得更加灵活!
抓一个官方的例子,就是用户认证这里,在判断一个进入/home
路径的时候,会有一个名为auth
的中间件做卡控,如果检测到没有登录,系统就会这次请求重定向到登录页或者自定义页面。
数据库
数据库方面laravel实在是太强大了,没错,老高说的就是Eloquent ORM
!(ORM对业务开发来说简直是福利,老高觉得过早写死SQL属于过早优化,是不科学的开发方式)
听到了ORM老高真是一把鼻涕一把泪啊,好久都没有用过了ORM了,虽然手写SQL也有好处,但是这个在业务开发初期,在架构不稳定的情况下,直接写SQL会把数据库定死,将来如果要换数据库,光是重构SQL都要花好一阵子了。
Eloquent可以很容易的被剥离出去单独使用。
这里抛砖引玉提一下,ORM这里常理来讲应该对应MVC中的M,意思是模型,用简单的话将,就是讲一张表映射成一个对象,这样理解是有误的,当业务复杂的时候,这样的定义就不在适用,需要引入一层新的业务层(名字随便),为上传请求屏蔽下层的实现。以后再详细讲,在此希望能引发你的思考,阅读更多。
本节主要是铺垫,下一节咱们跟一下系统的生命周期!
提个问题,你知道 symfony 和 laravel
区别和联系吗?
end