摘要:框架关键技术解析读书笔记二第五章框架应用程序根目录版本默认的框架应用程序是符合规范的,所以相应的目录结构也是基本固定的,不同的目录加载了功能文件,如果添加了新的目录,需要在文件中添加规范的自动加载部分并执行命令。
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("子视图文件名称"):用于在视图文件中加载视图文件。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/28657.html
摘要:判断是否存在构造函数,不存在直接实例化,存在则通过来获取输入函数,并有相应的方法解决依赖参数问题,实现依赖注入。 Laravel 框架关键技术解析·读书笔记(一) 第一章 入口文件 请求访问的入口文件,主要完成几部分工作,分别是: 自动加载函数的添加 服务器实例化与服务注册 路由加载 请求实例化与路由分发 相应生成与发送 其中,自动加载函数用于包含引用文件,改文件是composer...
摘要:装饰者模式是在开放关闭原则下实现动态添加或减少功能提高程序的扩展性详细介绍注本文可以作为学习装饰者模式的基础篇但是我个人更建议配套装饰者模式来学习效果更佳本文中的例子是由框架关键技术解析中摘抄的。 装饰者模式:是在开放-关闭原则下实现动态添加或减少功能,提高程序的扩展性.详细介绍注: 本文可以作为学习装饰者模式的基础篇,但是我个人更建议配套Decorator Pattern With...
摘要:装饰对象包含一个真实对象的引用装饰对象接受所有来自客户端的请求。装饰对象可以在转发这些请求以前或以后增加一些附加功能。在面向对象的设计中,通常是通过继承来实现对给定类的功能扩展。 Decorator Pattern 装饰者模式 纲要: 1. 一个初学者的疑惑 2. 装饰者模式的特点 3. 简单case掌握装饰者模式 4. laravel中装饰者模式的应用 Con...
摘要:然后中间件使用方法来启动获取实例,使用类来管理主要分为两步获取实例,主要步骤是通过该实例从存储介质中读取该次请求所需要的数据,主要步骤是。 说明:本文主要通过学习Laravel的session源码学习Laravel是如何设计session的,将自己的学习心得分享出来,希望对别人有所帮助。Laravel在web middleware中定义了session中间件IlluminateSess...
摘要:划下重点,服务容器是用于管理类的依赖和执行依赖注入的工具。类的实例化及其依赖的注入,完全由服务容器自动的去完成。 本文首发于 深入剖析 Laravel 服务容器,转载请注明出处。喜欢的朋友不要吝啬你们的赞同,谢谢。 之前在 深度挖掘 Laravel 生命周期 一文中,我们有去探究 Laravel 究竟是如何接收 HTTP 请求,又是如何生成响应并最终呈现给用户的工作原理。 本章将带领大...
阅读 1987·2023-04-25 15:24
阅读 1555·2019-08-30 12:55
阅读 1596·2019-08-29 15:27
阅读 449·2019-08-26 17:04
阅读 2388·2019-08-26 10:59
阅读 1774·2019-08-26 10:44
阅读 2173·2019-08-22 16:15
阅读 2568·2019-08-22 15:36