当前位置: 首页 > 后端技术 > PHP

【Laravel】Laravel框架关键技术分析阅读笔记(二)

时间:2023-03-29 19:45:55 PHP

Laravel框架关键技术分析阅读笔记(二)第五章框架应用根目录(5.1版本)默认Laravel框架应用符合PSR规范是的,所以对应的目录结构基本固定。功能文件加载在不同的目录中。如果新增目录,需要在composer.json文件中加入PSR规范的自动加载部分,并执行update命令。App:主要包括应用程序的核心代码。用户构建应用的大部分工作都是在app目录下进行的,包括路由文件、控制文件、模型文件等bootstrap:主要包括几个框架启动和自动加载的配置文件config:主要包括配置文件信息应用程序常用数据库:主要包括数据库迁移和数据库填充文件。public:应用的入口文件,包括应用入口文件index.php,以及CSS、JavaScript、图片等静态资源文件。resource:主要包含视图文件。存储:包含已编译的刀片模板、基于文件的会话、文件缓存和日志文件。tests:主要包含自动化测试文件。vendor:主要包含依赖库文件,包括框架源码。env:一个重要的文件,是Laravel框架的主要配置文件。composer.json:composer项目依赖管理工具app目录应用的大部分内容都存在于app目录中。该目录也使用自动加载标准(PSR-4)通过composer加载里面的文件。如果要更改目录命名空间,可以使用artisan命令app:name完成,也可以直接修改composer.json文件。console:主要包括所有的artisancommandsevents:用于控制事件相关的类exceptions:包括应用程序的异常处理类,用于处理应用程序抛出的任何异常Http:主要包括路由文件、控制器文件、请求文件、中间件files等,是应用程序与Laravel框架源码等外部库交互的主要文件。Jobs:主要包括消息队列的各种消息文件Listener:主要包括监听事件文件。Provider:主要包含服务提供商的相关文件。vendor目录由相互依赖的功能组件模块组织而成,这些模块可以独立工作,也可以组织起来协调工作。composer:主要包括composer根据PSR规范生成的自动加载类。该部分实现了应用的自动加载。laravel:包含laravel框架源码,代码部分包含在厂商lavelframeworksrcIlluminate文件中symfony:laravel框架底层(如请求类,对应类,文件管理类)使用symfonyframework,所以这个目录包含了这部分内容。monolog:包括日志记录模块文件phpunit:包括程序单元测试模块文件routing可以理解为路由设置的过程,理解为在微程序内部定义了一个路由表,就如同网络中使用的路由器一样,并且还需要事先准备好路由表。当不同的请求到来时,根据路由表选择不同的handler。基本路由设置是响应程序对应的资源定位符(URL)。该程序可以是闭包函数或控制器响应函数。标志的具体格式:Route::get('/',function(){return'HelloLaravel';});如果请求其他方法,则需要使用相应的路由设置方法,通过get、post、put、delete等方式定义相应的方法。多个请求的路由定义可以通过match和任何方法实现,Route::match(['get','post'],'/',function(){return'HelloLaravel';});Route::any('home',function(){return'HelloLaravel';});路由参数主要针对Get请求Route::get('资源ID/{参数名}[?][/{参数名}...','闭包函数或控制器响应函数标识符')[->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]+','姓名'=>'[a-z]+']);控制Route::get('home/{name}','HomeController@index');-Implicitcontrollerroute-RESTFulresourcecontrollerrouteroutegrouproutename相当于定义路由时为路由创建别名,以后可以通过别名获取路由的信息。控制器视图视图文件以“.balde.php”为后缀命名。datatransferarraymethodwithfunctionwithvariablenamemethodbladetemplate@extends('layoutfilename'):用于继承一个布局文件@section('blockname'):用于定义一个block,可以有不同的Endmark,@show用于显示本块,@stop和@endsection用于结束一个块,@overwirte用于重写上一个块@parent:用于显示继承布局模块中的文件。@yield('blockfile','defaultfile'):用于定义布局文件中定义的block@include('subviewfilename'):用于在视图文件中加载视图文件。