PHP框架 - Laravel 5.6
一、composer安装
1.1 composer介绍
composer是php用来管理依赖关系的工具,你可以在自己的项目中申明所依赖的外部关系库,composer会帮你安装这些依赖的库文件;一句话,composer是一个工具,是为php项目准备的软件管家。
1.2 composer工作原理
1.3 composer安装
windows安装:
命令行安装:
自行去操作...
注意:如果是安装composer.exe文件,一定要安装在使用的版本的php的安装目录,也就是php.exe所在目录
1.4 镜像地址设置:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ 或者 composer config -g repo.packagist composer https://packagist.phpcomposer.com
镜像原理:
1.5 配置文件修改
①开启php.ini扩展配置:
extension=php_openssl.dll
extension=php_pdo_mysql.dll (PDO)
extension=php_mbstring.dll (mbstring)
extension=php_fileinfo.dll (验证码)
extension=php_curl.dll (请求发送)
②开启http.conf配置
LoadModule deflate_module modules/mod_deflate.so
LoadModule rewrite_module modules/mod_rewrite.so
1.6 使用composer更新composer
composer self-update
二、Laravel安装
2.1 安装具体版本命令:composer create-project laravel/laravel=5.6.* my_laravel --prefer-dist
laravel/laravel=5.6.* 这个* 代表这里安装5.6的最高版本
2.2 查看框架版本信息:php artisan --version
2.3 启动服务:php artisan serve
2.4 laravel框架目录结构
① 目录文件 省略...
② artisan脚手架文件
注意:使用artisan文件需要注意2点
① php必须添加环境变量,必须保证版本
② artisan必须存在命令行当前的工作路径下,也就是框架的根目录下
2.5 laravel启动方式
① 方式1, 命令启动:php artisan serve 该启动方式不需要启动apache/nginx ,不推荐使用,能跑php,但是不启动数据库
② 方式2, 使用wamp环境,配置个虚拟主机
2.6 配置框架app key:php artisan key:generate
三、Laravel基础篇
3.1 路由
① 路由请求方式
get post any put delete patch options match ...
//路由匹配方式
Route::match(['get','post'],'hi',function(){
return 'leigong nihao!';
});
//路由带参数方式
Route::get('index/{id}',function($id){
return '编号是'.$id;
});
② CSRF保护
指向 web
路由文件中定义的 POST
、PUT
或 DELETE
路由的任何 HTML 表单都应该包含一个 CSRF 令牌字段,否则,这个请求将会被拒绝。
3.2 控制器创建
① 命令方式创建控制器
php artisan make:controller TestController 默认路径Controllers目录下
php artisan make:controller Admin/AdminController 指定路径,Controllers/Admin目录下
② 手动创建控制器
...
③ 通过设置路由访问控制器
Route::访问方式('uri','sction')
Route::get('task','TaskController@index');
Route::get('task/read/{id}','TaskController@read');
④ 接收用户输入
④.① 使用Illuminate\Support\Facades\Input类
④.② 使用Illuminate\Support\Facades\Request类,静态接收请求参数
3.3 路由参数、路由重定向、视图
① 路由参数
①.① 限定路由参数1
//限定路由参数
Route::get('task/read/{id}','TaskController@read')->where('id','[\d]+'); //接收单参数
Route::get('task/more/{id}/{name}','TaskController@more')
->where(['id'=>'\d+','name'=>'[a-z]+']); //接收多参数
①.② 限定路由参数2
//假设某个id已经在模型绑定器设置为全局,但是在某个方法中又想允许接收参数是任意类型
Route::get('task/read/{qj_id}','TaskController@read')->where('qj_id','.*');
② 路由重定向
②.① 使用redirect方式
//路由重定向
Route::get('inx','TaskController@index');
Route::get('re','TaskController@re');
//Route::redirect('inx','re');
Route::redirect('inx','http://www.baidu.com/',301);
②.② 使用permanentRedirect方式,可以直接让路由跳转301状态码而不用设置
//不带参数直接301
Route::permanentRedirect('inx','re');
③ 视图路由
③.① 路由形势 Route::view('uri','名称','参数');
//视图路由
Route::view('vi','test.test',['name'=>'leigong']);
③.② 使用助手函数
//助手函数方式的路由视图
Route::get('vi2',function(){
return view('test.test',['name'=>'墨菲特']);
});
③.③ 控制器返回视图
public function vi3(){
return view('test.test',['name'=>'菲兹']);
}
④ 路由命名
④.①
//路由命名
Route::get('vi3','TaskController@vi3')->name('vvv');
控制器中可以通过助手函数获取url
public function vi3(){
$url = route('vvv');
//route('vvv',['id'=>100]); //route助手函数带参数
dump($url);
return view('test.test',['name'=>'菲兹']);
}
④.②
使用redirect()结合route()生成重定向跳转
⑤ 路由分组
路由分组是为了让大量路由共享路由属性,包括中间件、命名空间
⑤.① 路由分组
//路由分组 第一个参数[]如果不写,那当占位符,空分组路由
Route::group([],function(){
Route::get('vi6',function(){
return 'vi6';
});
Route::get('vi7','TaskController@vi7');
});
//路由分组 第一个参数[]带分组前缀
Route::group(['prefix'=>'pre'],function(){
Route::get('vi8',function(){
return 'vi8';
});
Route::get('vi9','TaskController@vi7');
});
//推荐路由分组写法
Route::prefix('qa')->group(function(){
Route::get('qa1',function(){
return 'qa1';
});
Route::get('qa2','TaskController@vi7');
});
⑤.② 可以设置子域名
//可以设置子域名
Route::domain('127.0.0.1')->group(function(){
Route::get('zyy',function(){
return '子域名';
});
});
⑤.③ 可以设置路由路径前缀,通过prefix设置
//路由前缀
Route::prefix('api')->get('vi5','TaskController@vi5');
Route::prefix('api')->get('index',function(){
return 'index';
});
⑤.④ 可以指定命名空间
//指定命名空间
Route::namespace('admin')->group(function(){
Route::get('qa3',function(){
return 'qa3';
});
Route::get('qa4','ManagerController@index');
});
⑥ 单行为、回退、当前路由
⑥.① 单行为控制器 __invoke()方法
使用命令创建:php artisan make:controller 控制器名称 --invokable
//单行为控制器
Route::get('one','Admin\OneController'); //不用写方法
⑥.② 路由回退
//路由回退
Route::fallback(function(){
return redirect('/');
});
也可以做一个自己的404页面
//自定义404页面
Route::fallback(function(){
return view('404');
});
⑥.③ 当前路由信息
//当前路由信息
Route::get('qa5','Admin\ManagerController@qa5');
Route::get('qa6',function(){
dump(Route::current());
dump(Route::current()->uri);
});
Route::get('qa7',function(){
return Route::currentRouteName().PHP_EOL.Route::currentRouteAction();
})->name('qaqa');
⑦ 响应设置和重定向
⑦.① 响应设置
⑦.② 路由重定向
3.4 资源控制器
① 什么是资源控制器
创建命令:php artisan make:controller BlogController --resource
①④ 资源路由嵌套
//资源路由嵌套
Route::resource('blogs.comments','Admin\BlogController'); //edit
public function edit($art_id,$comm_id)
{
return '文章id='.$art_id.PHP_EOL.'评论id='.$comm_id;
}
①⑤ 资源浅层嵌套
3.5 表单伪造和CSRF保护
① 什么是CSRF攻击
② csrf使用
注意:有一种情况是没得选择的,只能使用csrf_token,就是使用ajax异步提交表单方式
③ 从csrf中排除列外路由
3.6 视图
① 视图文件
② 加载视图
③ 变量分配与展示
compact()函数,在当前的符号表中查找该变量名并将它添加到输出的数组中,变量名成为键名而变量的内容成为该键的值!!!
④ 在模板中使用函数
语法:{{函数名(参数1,参数2)}}
⑤ 循环与分支
⑥ 模板继承
基础页面
其他子页面
⑥ 模板包含
语法:@include('模板文件名') 文件名不带后缀
⑦ 外部文件引入
3.7 数据库配置入门
① 数据库配置,本地测试直接配置.env文件
config/database.php文件
② 添加数据
返回添加数据的id
③ 取出单行数据
④ 取出单个指定字段值
⑤ 查询一些指定字段值
⑥ 排序
⑦ 分页
3.8 模型操作
① 理解
每张数据表都对应一个与该表进行交互的“model模型”
② 使用命令创建模型
php artisan make:model Home/User
③ 模型的使用方式
③.① 模型使用方式一
User::get(); 等价于数据库的DB::table('user')->get();
③.② 模型使用方式二 实例化方式
$user = new User(); $user->get();
③.③ 模型添加数据
使用AR模式必须先实例化模型, 添加调用save()方法,返回布尔值
方式1
方式2
③.④ 查询操作,结果集默认是一个对象