一、Laravel概述
1.1 Laravel框架简介
Laravel是一套简洁、优雅的PHP WEB开发框架(目前最流行的PHP框架,基于symfony开发)
具有富于表达性且简洁的语法,Laravel是易于理解且强大的,它提供了强大的工具用于开发
大型、健壮的应用,如:验证、路由、会话技术、缓存、数据迁移、单元测试等等常用工具和功能。
Laravel官网
Laravel学院
Laravel中文文档
Laravel中国
Laravel常见的类库(top100)
1.2 什么是Laravel
简单来说就是使用PHP编写的一个框架。
1.3 Laravel框架相对于其他框架优势
1. 强大的路由模块(route)。
2. 命令行工具(artisan):加快项目开发(很多手动的工作都自动了)。
3. blade模版:可继承、渲染速度快、简化view开发和管理。
4. 数据迁移(Migrations): 管理数据库和版本控制。
5. 单元测试(PHPUnit):保证稳定性(便于发现问题,无论是需求更变还是代码本身的bug及代码重构)。
支持Composer:项目组件管理工具。
二、Laravel的安装
2.1 环境要求
1. PHP>=5.6
2. 开启openssl、mbstring、pdo、fileinfo扩展
2.2 安装方式
2.2.1 直接下载源代码安装
- 下载框架
- 解压到指定虚拟主机目录
- 访问(注:入口文件在public目录下)
2.2.2 通过composer安装
- Composer是 PHP 用来管理依赖(dependency)关系的工具。你可以在自己的项目中
声明所依赖的外部工具库(libraries),Composer 会帮你安装这些依赖的库文件。
Composer是为PHP准备的软件管家,项目所需工具库都可以通过Composer下载 - 下载Composer
官方网站
中文网站
方法1(仅支持windows)
下载composer-setup.exe文件安装
方法2
下载composer.phar文件安装
■ 方法1:通过composer-setup.exe安装
步骤1:双击
步骤2:安装(注:除下图选择php.exe其余直接下一步next):
步骤3:检查是否安装成功(在DOS窗口输入 composer出现下图字样则安装成功)
■ 方法2:通过composer.phar文件安装
步骤1:该文件免安装所以可以直接使用
步骤2:检查是否安装成功(在DOS窗口输入 composer出现下图字样则安装成功)
3)Composer命令
复杂:php composer.phar 指令
简化:composer 指令
说明:后期大量使用composer命令,语法:【php composer.phar 指令】
发现:每次重复敲【php composer.phar】太长
解决:
1)将composer.phar放到www目录中然后输入DOS命令
【echo @php “%~dp0composer.phar” %*>composer.bat】后发现www目录下新增了.bat文件将其加入环境变量即可
2)将composer.bat将去环境变量
3)验证
4)安装Laravel(后天详细讲解)
步骤1:配置通过国内镜像下载
composer config -g repo.packagist composer https://packagist.phpcomposer.com
步骤2:通过Composer下载框架
composer create-project laravel/laravel test_laravel
三、Laravel目录结构分析
1、整体目录
2、app目录
3、Http目录
4、boostrap目录
5、config目录
6、database目录
7、public目录
8、resource目录
9、storage目录
主要是存放缓存文件和日志文件,需要注意:如果是在Linux环境下,该目录需要有可写的权限
10、vendor目录
11、.env文件
︴思考:通过框架完成下属功能需要哪些知识点?
1、留言列表显示
路由(访问)-> 控制器(调用) -> 视图
路由如何创建?
控制器如何创建 并且 如何调用视图
视图如何创建?
如何操作数据库获取数据库,传递给视图
如何如何显示数据
2、添加留言
如何获取提交的数据
如何保存在数据库中并且跳转网页
3、总结(新框架快速上手原则)
路由(访问) -> 控制器(调用) -> 视图
(操作)-> 数据库
四、Laravel框架中的控制器
1、控制器的存放目录
app\Http\Controllers\平台名称\控制器名Controller.php (注:大驼峰)
2、控制器的命名规则
控制器使用大驼峰命名方
如:UserController.php、TestController.php等
3、创建控制器
方法1:artisan命令创建 (使用代码生成器创建控制器)
命令:php artisan make:controller 平台名\控制器名Controller
说明:使用artisan命令时必须在项目根目录下,因为artisan文件在根目录下
方法2:手动创建
直接复制已有控制器改名或者复制下属代码,推荐使用artisan创建
五、路由1
v 准备:PHP闭包
1)JS闭包
概念:在JS中当一个函数执行时可以让其内部局部变量不受其他作用域影响,同
时当前函数执行完毕后还可能让其内部变量常驻内存不销毁的运行机制被称为JavaScript的闭包。
定义:两个函数彼此嵌套,并返回内部函数
function a() {
function b() {
}
return b;
}
var arr = [];
for (var i = 0; i<10; i++) {
//arr[i] = function(){
//alert(i);
//}
arr[i] = a(i);
}
arr0; //理论上,小白认为0,但实际10
function a (num) {
function b() {
alert(num);
}
return b;
}
2)PHP闭包函数(php5.3+)
1、路由的作用
概念:路由就是网址
作用:把用户发送的HTTP请求,交给指定的控制器方法来处理它
2、路由配置文件
3、配置路由(routes\web.php)
1、路由定义格式
Route::请求类型(请求的URL,匿名函数或控制器方法)
响应多个HTTP请求:
Route::match([请求类型1,..请求类型n], 请求的URL,匿名函数或控制器方法)
响应素有HTTP请求
Route::any(请求的URL,匿名函数或控制器方法)
2、请求方式有哪些?
可以是HTTP的8种请求类型之一,如:get、put、post、delete…等,常用get和post
︴练习
不同的请求响应
get请求,闭包函数响应
get请求,控制器响应
post请求,闭包函数响应(注:app\Http\Kernel.php注释VerifyCsrfToken)
post请求,控制器响应
响应多个HTTP请求
响应所有HTTP请求
4、路由参数
1)语法
Route::HTTP请求类型(请求的URL/{参数名称}, 闭包函数或控制响应的方法)->where(参数名称,正则表达式)
2)闭包函数操作参数
一个参数
多个参数
默认参数
3)控制器操作参数
多个参数
默认参数
4)正则表达式限制参数
限制一个参数
限制多个参数
<?php
Route::get(‘/test/{id}/{name}’, function($id, $name) {
return $id . ‘___’ . $name;
})->where([‘id’ => ‘\d+’, ‘name’ => ‘\w+’]);
5、路由群组
1)概念
多个路由之间共享路由属性,减少冗余。
2)案例
<?php
#prefix是将子路由【请求url】公共部分提取
Route::group([‘prefix’ => ‘a’,’namespace’ => ‘Home’], function() {
// Route::get(‘/a/test1’, ‘Home\Day1Controller@index’);
// Route::get(‘/a/test2’, ‘Home\Day1Controller@index2’);
// Route::get(‘/a/test3’, ‘Home\Day1Controller@index3’);
Route::get('test1', 'Day1Controller@index');
Route::get('test2', 'Day1Controller@index2');
Route::get('test3', 'Day1Controller@index3');
});
6、路由别名
是uses非users
路由总结
Route::请求类型(请求URL,闭包函数或控制器的方法)
请求多个类型
Route::match([类型1,…,类型n],请求URL,闭包函数或控制器的方法)
请求所有类型
Route::any请求URL,闭包函数或控制器的方法)
路由参数:
1)请求URL增加参数,如:/test/{id}/{name}
2)闭包函数或者控制器的方法定义对应形参
如果请求URL参数增加?表示可以设置默认值
3)参数条件:直接给请求类型静态方法后面->where(参数名,正则)
多个则where条件写数组,如:上述截图
路由群组:
1)作用:减少冗余
2)语法:
Route::group([‘prefix’ => ‘请求URL公共部分’, ‘namespace’ => ‘公共命名空间’], function(){
路由规则
});
路由别名:如果请求URL过长则可以写别名,后期直接通过route方法获取真实的
请求URL地址(注:如果别名重复则后者覆盖前者)
六、视图1
1、控制器调用视图
1)语法
方法1:直接return字符串
方法2:return view(视图名,compact(变量名1,….,变量名2))
视图默认在resources/views目录下:【文件扩展名.php】或者【xxx.blade.php】
视图文件统一首字母小写
视图文件分文件夹管理:通过点“.”来打开子目录下的视图文件,如:return view(admin.index.index);则表示打开resources/views/admin/index/index.php文件 或者 index.blade.php文件(注:会自动判断)
2)练习(调用视图)
步骤1:创建路由(访问Day1控制器的index2方法)
Route::get(‘/‘, ‘Home\Day1Controller@index2’);
步骤2:创建控制器(php artisan make:controller 平台名\控制器名Controller)
步骤3:控制器调用视图
步骤4:网址+url访问
2、基本用法视图传参
1)认识compact函数
语法:compact(变量名1,….,变量名n)
作用:将多个变量组成数组(变量名是数组的键)
public function index2()
{
$data1 = 1;
$data2 = 2;
$data3 = 3;
$rs = compact(‘data1’, ‘data2’, ‘data3’);
print_r($rs);
//多学一招:laravel提供可以调试的方法dd函数,会格式化打印数据
dd($rs);
return view(‘test.qz1’);
}
2)数组方式(给视图传递数据)
3)工作常用(给视图传递数据)
4、【★】blade模板
1)什么是blade模板
Blade 是 Laravel 提供的一个模板引擎。
Blade 视图文件使用 .blade.php 文件扩展名
2)blade模板标签
注释(同Smarty注释响应时不含注释内容)
展示变量数据
多学一招
htmlspecialchars 将 指定字符 转化为 HTML实体符
<
循环
@foreach ( 变量 as $k=>$v)
@endforeach
判断
@if ()
@elseif()
@else
@endif
指定原声PHP(少用)
@php
@endphp
http://laravelacademy.org/post/6780.html#toc_10
七、获取请求输入
1、语法
1)方法1
步骤1:导入命名空间【use Illuminate\Http\Request】
步骤2:在方法小括号中声明(Request $request)
步骤3:
$request->all() 获取所有数据
$request->input(参数名,默认值) 获取单个数据(仅可以获取get数据)
$request->only([参数名1,…,参数名n]) 获取指定数据
$request->except([参数名1,…,参数名n]) 获取指定数据外的所有数据
2)方法2
步骤1:导入命名空间【use Illuminate\Support\Facades\Input】
步骤2:
Input::all() 获取所有数据
Input::get(参数名[,默认值]) 获取单个数据
Input::only([键1,…,键n]) 获取指定数据
Input::except([键1,…,键n]) 获取指定数据外的所有数据
2、练习
视图
控制器
总结
request类 input类
接受全部数据 $request->all() Input::all()
接受get数据 $request->input(键,默认指); Input::get(键,默认指)
接受指定数据 $request->only([键1,…键n]); Input::only([键1,…键n]);
指定数据除外 $request->except([键1,…键n]); Input::except([键1,…键n]);
http://laravelacademy.org/post/6750.html
八、留言板功能
准备(数据库初体验,明天详细讲)
语法
查询所有数据语法:DB::table(表名)->get()
插入数据语法:DB::table(表名)->insert(关联数组)
练习
步骤1:创建数据库和留言表并插入数据
create database laravel54;
use laravel54;
#标准写法
– create table msg (
– id int primary key auto_increment comment ‘编号’,
– uname varchar(45) not null comment ‘用户名’,
– content text not null comment ‘内容’,
– created_at int not null default 0 comment ‘创建于’,
– updated_at int not null default 0 comment ‘更新于’
– )engine=myisam charset=utf8;
#为铺垫后面课程修改
create table msg (
id int primary key auto_increment comment ‘编号’,
uname varchar(45) comment ‘用户名’,
content text comment ‘内容’,
created_at int not null default 0 comment ‘创建于’,
updated_at int not null default 0 comment ‘更新于’
)engine=myisam charset=utf8;
insert into msg values
(null,’a’,’aaaa’,0,0),
(null,’a’,’aaaa’,0,0),
(null,’a’,’aaaa’,0,0);
步骤2:修改laravel数据库配置文件
1、留言列表
1)思路
步骤1:创建路由,通过【/msg】访问
步骤2:创建【Msg】控制器的【index】方法
步骤3:创建视图在msg目录下的index.blade.php文件中
步骤4:控制器获取数据,视图循环显示
2)代码
步骤1:创建路由,通过【/msg】访问
步骤2:创建【Msg】控制器的【index】方法
步骤3:创建视图在msg目录下的index.blade.php文件中
步骤4:控制器获取数据,视图循环显示
控制器
视图
2、添加留言
1)思路
说明:因为添加特殊(其和列表在同一个页面所以不需要重新加载视图)
步骤1:修改路由
步骤2:控制器接受数据,并添加到数据库
2)代码
步骤1:修改路由
步骤2:控制器接受数据,并添加到数据库
今天总结
什么是Laravel:就是用PHP写的框架
Laravel安装:
条件:php>5.6.4 openssl扩展、pdo扩展、mbstring扩展等
两种安装方式:
1)直接下载源代码包
2)通过composer安装
什么是composer:PHP的软件管家,所有文件下载到vendor目录
创建控制器
目录:app\Http\controllers\平台名\控制器名称Controller.php
创建两个方式
1)命令行创建:php artisan make:controller 平台名\控制器名
2)直接复制已经创建的更改类名即可
Route::请求类型(请求URL,闭包函数或控制器的方法)
请求多个类型
Route::match([类型1,…,类型n],请求URL,闭包函数或控制器的方法)
请求所有类型
Route::any请求URL,闭包函数或控制器的方法)
路由参数:
1)请求URL增加参数,如:/test/{id}/{name}
2)闭包函数或者控制器的方法定义对应形参
如果请求URL参数增加?表示可以设置默认值
3)参数条件:直接给请求类型静态方法后面->where(参数名,正则)
多个则where条件写数组,如:上述截图
路由群组:
1)作用:减少冗余
2)语法:
Route::group([‘prefix’ => ‘请求URL公共部分’, ‘namespace’ => ‘公共命名空间’], function(){
路由规则
});
路由别名:如果请求URL过长则可以写别名,后期直接通过route方法获取真实的
请求URL地址(注:如果别名重复则后者覆盖前者)