Laravel框架是世界上最流行的PHP开发框架,没有之一。近年来Laravel以强大、安全、优雅等特性迅速占据了PHP开发框架第一份额的宝座。现在Laravel框架已成为大型互联网公司及PHP攻城狮们的首选框架。
- Laravel是一套简洁、优雅的PHP web开发框架;
- 具有富于表达性且简洁的语法;
- Laravel是易于理解且强大的,它提供了强大的工具用以开发大型、健壮的应用;
- 具有验证、路由、session、缓存、数据库迁移工具、单元测试等常用的工具和功能;
开发环境的搭建
Laravel框架比较激进,大量使用了PHP的新特性,所以对PHP的版本要求比较高;
Laravel下载和安装
Laravel中文网,根据本地PHP版本对应下载,下载完成后解压压缩包,并配置域名到public文件夹下,访问浏览器出现下图说明安装成功;
Laravel核心目录文件介绍
app——应用程序的核心代码,项目的业务逻辑主要放这个文件夹
app/Http/Controllers——是MVC中的C控制层文件夹,控制层写在这里
bootstrap——包含框架启动跟自动加载配置的文件
config——包含所有应用程序的配置文件
database——包含数据库迁移与数据填充文件
public——包含入口以及项目静态资源文件,以后项目的图片、js、css都要放在public目录下
resources——包含视图以及原始的资源文件
resources/views——是MVC中的V视图文件夹,视图页面都要写在这里
storage——包含编译后的模板文件,以及基于文件的session、文件缓存、日志和其它框架产生的文件
tests——单元测试目录,放测试代码
vendor——包含composer下载的依赖模块
路由简介
简单的说就是将用户的请求转发给相应的程序进行处理,作用就是建立url和程序之间的映射,好处是我们可以灵活的修改和美化路由,而不需要对程序本身进行修改;
laravel中的路由请求类型有get、post、put、patch、delete
- 基本路由
在app/Http/routes.php书写路由
get
//第一个参数是自定义路由名,第二个是匿名函数体
Route::get('basic1',function () {
return 'hello world';
});
post
Laravel框架为了防止跨域请求攻击(CSRF)而为用户生成的随机令牌,post请求如果没有验证token,就会出现报错信息。解决方法:在form表单中添加一个隐藏域,携带token参数即可:
<input type="hidden" name="_token" value="{{csrf_token()}}">
Route::post('basic2',function () {
return 'Basic2';
});
- 多请求路由
//match需要指定路由请求类型
Route::match(['get','post'],'test',function () {
return 'test';
});
//any响应所有路由请求类型
Route::any('test2',function () {
return 'test2';
});
- 路由参数
Route::get('user/{id}',function ($num) {
return 'user--' . $num;
});
//路由默认值
Route::get('user/{name?}',function ($user = 'gsy') {
return 'user-name-' . $user;
});
//利用正则表达式限制
Route::get('user/{name?}',function ($user = 'gsy') {
return 'user-name-' . $user;
})->where('name','[A-Za-z]+');
//多参数正则匹配
Route::get('user/{id}/{name?}',function ($id,$user = 'gsy') {
return 'user-id-' . $id . '-name-' . $user;
})->where(['id' => '[0-9]+','name' => '[A-Za-z]+']);
- 路由别名
优点:当优化URL后,那模板或者PHP代码中用route生成的URL是不需要更改的;
//用route函数生成与别名对应的URL
Route::get('user/member-center',['as' => 'center',function () {
return route('center');
}]);
- 路由群组
在访问群组里的路由时要加上路由前缀
Route::group(['prefix' => 'member'], function () {
Route::get('user/member-center',['as' => 'center',function () {
return route('center');
}]);
Route::get('test', function () {
return 'member-test';
});
});
- 路由中输出视图
更改路由地址,那么你访问相对应的路由就可以看到引入的页面
Route::get('view', function () {
return view('welcome');
});
Laravel中的路由是相当强大,能接受请求、能做出相应的处理还能输出视图,真正的项目中路由只用来接收请求,并转化给控制器中的方法进行处理,很少会在路由中输出视图;