一、Laravel简介
框架提供的功能:
1、数据库DB
2、缓存Cache
3、会话Session
4、文件上传
流行框架的优点
文档齐全
社区活跃
后期支持
Laravel简介
1、简洁,优雅
2、验证,路由,session缓存,数据库迁移功能,单元测试
版本选择
长期支持 LTS Long Time support
二、环境配置
服务器环境
$ php -v PHP 7.1.23
Laravel 5.8 要求:PHP >= 7.1.3
文档:https://laravel.com/docs/5.8
MVC数据交互
视图View <-> 控制器Controller <-> 模型Model
Mac MAMP
Win XAMPP
phpinfo.php
<?php phpinfo();
设置国内镜像
# 查看全局设置 composer config -gl # 设置镜像 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer # 解除镜像 composer config -g --unset repos.packagist
参考国内的Composer全量镜像汇总
创建项目
$ composer create-project laravel/laravel=5.8.* demo --prefer-dist $ cd demo $ php artisan --version Laravel Framework 5.8.35 # 启动服务 $ php artisan serve
整个文件夹大小
Laravel Framework 5.8.35 32.8M
ThinkPHP_5.0.24_with_extend 5.6M
三、路由
1、路由简介
路由将用户的请求转发给对应的程序进行处理
作用:建立url和程序之间的映射
请求类型:get、post、put、patch、delete
路由文件:routes/web.php
2、基本路由
Route::get('hello', function () { return 'hello world'; }); Route::post('post', function () { return 'post'; });
3、多请求路由
Route::match(['get', 'post'], 'match', function () { return 'match'; }); Route::any('any', function () { return 'any'; });
4、路由参数
Route::get('detail/{id}', function ($id) { return 'detail-id: ' . $id ; }); // 默认参数 Route::get('detail/{name?}', function ($name = null) { return 'detail-name: ' . $name ; }); // 正则判断参数类型 Route::get('detail/{id}', function ($id) { return 'detail-id: ' . $id ; })->where('id', '\d+'); Route::get('detail/{name?}', function ($name = null) { return 'detail-name: ' . $name ; })->where('name', '[A-Za-z]+'); // 多个参数校验 Route::get('detail/{id}/{name?}', function ($id, $name = null) { return 'detail-id: ' . $id . ' detail-name: ' . $name ; })->where(['id' => '\d+', 'name' => '[A-Za-z]+']);
5、路由别名
Route::get('path', ['as'=>'alias', function(){ return Route('alias'); }]);
6、路由群组
Route::group(['prefix' => 'user'], function (){ // 访问方式:user/name Route::get('name', function (){ return 'user name'; }); // 访问方式:user/age Route::get('age', function (){ return 'user age'; }); });
7、路由中输出视图
Route::get('/', function () { return view('welcome'); // resources/views/welcome.blade.php });
四、控制器
路由只接收请求,具体业务逻辑交由控制器处理
1、新建控制器
app/Http/Controllers/MemberController.php
namespace App\Http\Controllers; class MemberController extends Controller { function info(){ return 'hello world'; } }
2、控制器和路由关联
Route::get('member/info', 'MemberController@info'); // 或者 Route::get('member/info', ['uses' => 'MemberController@info']);
3、关联控制器后,路由特性使用
// 别名 Route::get('member/info', [ 'uses' => 'MemberController@info', 'as' => 'memberinfo' ]); // 控制器中使用别名 // Route('memberinfo'); // 路由参数 Route::get('member/info/{id}', 'MemberController@info'); // 控制器接收参数 // function info($id){ // return 'info:' . $id; // } // 验证路由参数 Route::get('member/info/{id}', 'MemberController@info') ->where('id', '[0-9]+');