框架简介
laravel 文档齐全
社区活跃
后期维护好, 强大的工具
下载安装
环境要求, php 版本在 7 以上 (要与框架所需一致)
集成环境, 建议使用 laralgon(适应 laravel 框架开发)
安装可使用 conposer(自行看官方文档), 也可在 laravel 学院下载一键安装包 (不用再配置环境和下载安装依赖)
环境配置根目录要指向项目目录中的 public
项目目录
app/Http/Controllers [控制器存放的位置, MVC 中的 C]
bootstrap 包含框架启动和自动加载配置的文件 (app.php 和 autoload.php)
config 包含所有应用程序的配置文件 (缓存数据库队列)
database 包含数据库的迁移和数据填充文件
public 包含入口和项目静态资源文件 (js,cs)
resources/view 包含了视图和原始的资源文件
routes 路由入口文件目录
storage 包含了编译后的模板文件和缓存文件, 日志文件
tests 单元测试目录文件
vendor 加载的依赖模块
路由
概括 将用户的请求转发给相应的程序进行处理, 建立程序和 url 之间的映射.
laravel 中的请求方式有: get post put pacth any
- delete
- // 基础路由 get
- // http://localhost/testGet
- Route::get('testGet', function(){
- return 'HELLO WORLD';
- });
- // 基础路由 post
- Route::post('testPost', function (){
- return 'Hello Post';
- });
- // 多请求路由 match
- // http://localhost/testMatch
- Route::match(['get','post'],'testMatch', function (){
- return 'Hello match';
- });
- // 多请求路由 any
- // http://localhost/testAny
- Route::any('testAny', function(){
- return 'Hello any';
- });
- // 路由参数
- // http://localhost/testGetUser/12
- /*Route::get('testGetUser/{id}', function ($id){
- return 'testGetUserId='.$id;
- });*/
- /*// 路由参数
- // http://localhost/testGetUser/name
- Route::get('testGetUser/{name?}', function ($name = 'NULL'){
- return 'testGetUserName='.$name;
- })->where('name','[A-za-z]+')*/;
- // 路由参数
- // http://localhost/testGetUser/1/name
- /*Route::get('testGetUser/{id}/{name?}', function ($id, $name = 'NULL'){
- return 'id='.$id.'testGetUserName='.$name;
- })->where(['id'=>'[0-9]+','name'=>'[A-za-z]+']);*/
- // 路由别名 [为整个路由取别名]
- // http://localhost/testGetUser/center
- Route::get('testGetUser/center',['as' => 'center', function(){
- return route('center');
- }]);
- // 路由群组
- // http://localhost/member/testAny
- Route::group(['prefix' => 'member'], function (){
- Route::any('testAny', function(){
- return 'Hello member-any';
- });
- });
- // 路由中输出视图
- // http://localhost/view
- Route::get('view', function (){
- return view('welcome');
- });
一次访问周期 [流程]
入口 public/index.php
创建服务器容器 (用于管理类依赖和执行依赖注入的工具)
发送请求到 http 内核和 consle 内核 (分别用来处理 web 请求和
Artisan 命令)
内核启动载入服务提供者, 注册提供者, 服务提供者启动 lavavel 框架中的各种重要组件 (例如, 数据库, 路由, 队列, 验证器)[最为重要的部分] .
请求教友路由器进行分发, 并运行路由器制定的中间件.
服务器容器
概括: 用于管理依赖和执行依赖注入的工具
绑定: 几乎所有的服务器容器都在服务提供者中完成的
门面
概括: 门面就是为容器对象提供一个访问方式的类
中间件
概括: 中间件为过滤进入应用的 HTTP 请求提供了一套便利的机制.
用法:
一, 类似于 tp 框架中的 Behavior, 或钩子的用法. 用于请求的前期验证或后期验证处理.
二, CORS 中间件可以用于, 请求方法增加请求头.
三, 日志中间件可以记录所有进入站点的请求.
中间件组: 更为快捷的实现一次分配给路由多个中间件组; 指定一个中间键名将相关中间件放到一个组里.
中间件参数, 中间件可以传递额外的自定义参数.
终端中间件, 用于请求完成之后的善后操作.
CSRF 保护
概括: 跨站请求伪造, 通过伪装成授权用户去访问攻击网站的恶意漏洞.
lavavel 自带 CSRF 中间件, 会自动为应用授权保护的有效用户会话创建一个 CSRF 令牌, 并存在 session 中, 用于验证授权用户和访问用户是否是同一个人.
控制器 [MVC 中的 C]
路由指向控制器 [同理: 其它请求方式做相应更改]
- // http://localhost/testController
- Route::get('testController', 'TestController@testController');
路由取别名 [可以通过 route('testInfo'), 获取路由地址]
- Route::get('testController',[
- 'uses' => 'TestController@testController',
- 'as' => 'testInfo',
- ]);
参数绑定
- // [路由文件]http://localhost/testController/1
- Route::get('testController/{id}',['uses' => 'TestController@testController']);
- <?php
- /**
- * Created by PhpStorm.
- * User: admin
- * Date: 2018/6/5
- * Time: 15:45
- */
- namespace App\Http\Controllers;
- class TestController extends Controller
- {
- // [控制器文件] TEST
- public function testController ($id)
- {
- return 'id-'.$id;
- // return route('testInfo');
- // phpinfo();
- }
- }
- // 参数验证
- // http://localhost/testController/1
- Route::get('testController/{id}',['uses' => 'TestController@testController'])
- ->where('id', '[0-9]');
视图
位置, resources/views
创建新视图时, 按控制器名创建新文件夹
- // 新建视图文件 testview.php, 输出 testview php
- // 控制器输出 return view('testview');
模板传参
- // controller 文件
- public function testController ($id)
- {
- return view('test/test',[
- 'id' => $id
- ]);
- }
视图文件显示
- test/test blade
- {{$id}}
模型
位置 app 根目录
模型文件
- ```
- <?php
- /**
- Created by PhpStorm.
- User: admin
- Date: 2018/6/5
- Time: 17:37
- */
- namespace App;
- use Illuminate\Database\Eloquent\Model;
- class Test extends Model
- {
- public static function getTestInfo () {
- return 'THIS IS A GOOD IDEA';
- }
- }
- controller 文件
- public function testController ($id)
- {
- return Test::getTestInfo();
- }
- ```
数据连接
文件位置 config/database.php vendor/.env
来源: http://www.bubuko.com/infodetail-2632113.html