【Laravel】Laravel 框架关键技术解析·读书笔记(二)

Laravel 框架关键技术解析·读书笔记(二)

第五章
  • 框架应用程序根目录(5.1版本)

    默认的Laravel框架应用程序是符合PSR规范的,所以相应的目录结构也是基本固定的,不同的目录加载了功能文件,如果添加了新的目录,需要在composer.json文件中添加PSR规范的自动加载部分并执行update命令。

    • App: 主要包括应用程序的核心代码,用户构建应用的大部分工作都在app目录下进行,包括路由文件、控制文件、模型文件等。
    • bootstrap:主要包含几个框架启动和自动加载配置文件
    • config:主要包含应用程序常用的配置文件信息
    • database:主要包含数据库迁移和数据库填充文件。
    • public :应用程序的入口文件,包含应用程序入口文件index.php,同时包含静态资源文件如CSS,JavaScript,images等。
    • resource:主要包含视图文件。
    • storage:包含编译后的blade模板,基于文件的session,文件缓存和日志文件等。
    • tests:主要包含自动化测试文件。
    • vendor:主要包含依赖库文件,其中包括框架源代码
    • .env:一个重要的文件,为Laravel框架的主配置文件。
    • composer.json:composer项目依赖管理工具
  • app目录

    应用程序的大部分内容都存在于app目录下,该目录同样通过composer使用自动加载标准(PSR-4)来加载其中的文件,如果想改变目录下的命名空间,可以使用artisan命令app:name完成,也可以直接修改composer.json文件实现。

    • console:主要包含所有的artisan命令
    • events:用来控制与事件相关的类
    • exceptions:包含应用程序的异常处理类,用于处理应用程序抛出的任何异常
    • Http:主要包含路由文件、控制器文件、请求文件,中间文件等,是应用程序与Laravel框架源代码等外部库交互的主要文件。
    • Jobs:主要包含消息队列的各种消息类文件
    • Listener:主要包含监听事件类文件。
    • Provider:主要包含服务提供者的相关文件。
  • vendor目录

    由一个个相互依赖的功能组件模块组织起来的,可以独立工作,也可以被组织起来协调工作。

    • composer:主要包含composer按照PSR规范生成的自动加载类。应用程序的自动加载都是由这部分实现的。
    • laravel:包含laravel框架源代码,代码部分都包含在vendorlaravelframeworksrcIlluminate文件中
    • symfony:laravel框架的底层(如请求类、相应类、文件管理类)使用了symfony框架的部分,所以该目录包含这部分内容。
    • monolog:包括日志记录模块文件
    • phpunit:包含程序单元测试模块文件
  • 路由

    可以理解为将路由设置的过程理解为微程序内部定义了一个路由表,与网络中使用的路由器一样,也事先需要有一个路由表。当不同的请求到来时,根据路由表选择不同的处理程序

    • 基础路由设置

基本路由是一个资源定位符(URL)对应一个响应程序,这个程序可以是一个闭包函数,也可以是一个控制器响应函数的标识

具体格式:

Route::get('/',function () {
    return 'Hello Laravel';
});

如果请求其他方法,则需要使用对应的路由设置方法进行定义,对应的方法由get,post,put,delete等。

对于多种请求的路由定义,可以通过match和any方法实现,

Route::match(['get','post'],'/',function () {
    return 'Hello Laravel';
});

Route::any('home', function () {
    return 'Hello Laravel';
});
  • 路由参数

主要针对的是Get请求的情况

Route::get('资源标识/{参数名}[?][/{参数名}……', '闭包函数或者控制器响应函数标识')[->where('参数名','正则表达式')];

Route::get('user/{id}',function ($id){
   return '$id=' . $id;  
});

Route::get('user/{id}/{name}',function ($id, $name){
    return '$id=' . $id . ' and $name=' . $name; 
})->where(['id' => '[0-9]+', 'name' => '[a-z]+']);
  • 控制器路由

    • 基础控制器路由

      Route::get('home/{name}','HomeController@index');
- 隐式控制器路由
- RESTFul资源控制器路由
  • 路由群组
  • 路由命名

相当于在路由定义时为路由起一个别名,以后可以使用别名来获取路由的信息

  • 控制器
  • 视图

    视图文件是以“.balde.php”后缀命名。

    • 数据传递

      • 数组方式
      • with函数
      • with加变量名方式
    • blade模板

      • @extends(‘布局文件名’):用于继承一个布局文件
      • @section(‘区块名’):用于定义一个区块,可以有不同的结尾标识,@show用于显示这个区块,@stop和@endsection用于结束一个区块,@overwirte用于重写前面的区块
      • @parent:用于显示继承的布局模块中的文件。
      • @yield(‘区块文件’,’默认文件‘):用于定义在布局文件中定义一个区块
      • @include(‘子视图文件名称’):用于在视图文件中加载视图文件。
    原文作者:xiaoyu_v5
    原文地址: https://segmentfault.com/a/1190000014552363
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞