laravel 5.6初学笔记

laravel 5.6初学笔记

框架简介
  • 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

猜你喜欢

转载自www.cnblogs.com/maomojun/p/9141121.html