首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Laravel系列3.2】路由:指哪儿打哪儿

其实,传统方式可以看做是一种隐式路由,而我们需要写这种是一种显式路由。Laravel 也是支持隐式路由,只是它并不推荐这么做。那么,显式路由什么好处呢?...Restful 风格 URL 多个 URI 指向同一个控制器可以在路由中区分参数) URI 和 控制器 解耦,自由定义名称,不受控制器里面方法限制 很多场景都不需要控制器,比如一个静态页面,直接路由里就可以搞定了...请求参数 RESTful 风格配置 对于请求参数,我们可以使用依赖注入 Request 来获取,不过还有另外一种方式,可以获取 RESTful 风格参数,也就是 URL Path 风格参数。...name 参数后面的冒号表明这个参数是一个可选参数, where 则指定了参数规则,比如 id 必须是数字, name 必须是小写 a z 。...://laravel8/route/user/1 // Erwin Ortiz 上述代码,我们需要参数名称和模型对象参数名称相同,然后在 URL 传递对应数据 ID ,这样就可以直接查询模型对象对应数据信息

11.7K10

Laravel系列3.1】​一个请求前世今生

管道最主要能力就是对于中间件处理,责任链在实现时候,遵循就是类似于中间件这样一种概念,让请求依次经过每个中间件,需要处理就处理,不需要处理就路过。...通过不断地注入,让这个 request 参数在中间件不停地穿梭处理,最后到达路由或者控制器。...可以最后总结一下,一个请求路径,从 入口文件index.php ,进入 Kernel 内核之后,就是一直在 Pipeline 管道不断地使用中间件进行处理,最终达到 路由 或者 控制器 。...普通 all() 方法返回是一个参数数组,大家可以直接打印出来看一下。 input() 方法则是从 all() 取出一个指定名称参数信息。...使用断点调试,会发现这个 return 之后会进入 laravel/framework/src/Illuminate/Routing/Router.php prepareResponse() 方法

7.5K20
您找到你想要的搜索结果了吗?
是的
没有找到

Laravel 控制器:从 MVC 模式聊起

4、依赖注入 正如前面介绍 Input 门面一样,Laravel 门面为 Laravel 代码库大部分类提供了简单接口调用,通过门面你可以轻松从当前获取各种请求数据,比如用户输入、Session...、Cookie 等,但不是所有的类都有对应门面(当前映射关系可以查看门面列表),对于这些类提供方法我们可以通过更底层依赖注入来调用,本质上来看,门面仅仅是一种设计模式,是对底层复杂 API 上层静态代理...,主要目的在于简化代码调用,所以可以用门面调用方法肯定可以用依赖注入来实现,可以通过依赖注入实现功能不一定可以通过门面来调用,除非你自定义实现这个门面。...在 Laravel 中所有的控制器方法(包括构造函数)都会在服务容器中进行解析,这意味着所有方法传入可以被容器解析接口/类型提示对应服务实现都会被自动注入,我们这个过程称之为依赖注入。...在日常开发,推荐大家使用依赖注入而非门面来获取用户输入数据,除此之外,还可以通过 $request 对象获取 Session、Cookie 数据。

11.2K51

Laravel框架关键技术解析

3.Laravel框架应用:大量使用,如在服务提供者注册过程,通过服务名称与提供服务匿名函数进行绑定,在使用可以实现动态服务解析。...app目录下可以放置模型类文件 app目录已经通过composer包含到自动加载目录,所以新建目录不需要更新自动加载类,但是类命名空间需要与文件目录相符 4.vendor目录 composer:主要包含...……}); 2.控制器 通常放在laravel/app/Http/Controllers目录下,继承Illuminate\Routing\Controller类,作为HTTP请求二次分发控制部分,通过依赖注入解决了与路由紧耦合关系...控制反转是组件间依赖关系从程序内部提到外部容器来管理,依赖注入是指组件依赖通过外部以参数或其他形式注入,两种说法本质上是一个意思 5.Laravel:Illuminate\Container\Container...这个过程可以称为session操作阶段。 3.当返回响应时,session数据存储相应位置,以备下一次请求到来时使用并发送sessionIDCookie。

11.9K20

Laravel系统3.3】控制器与表单验证

当然,在正式 MVC 模型,视图是可以直接和模型交互,由此,也引申出了 MVP 模型,其中这个 P 就是强化控制器作用,让模型和视图解耦。...name=Bob&sex=male 在这里,我们使用了两种接收 Request 方式。一个是使用依赖注入 request 对象,一个是使用 request() 方法返回 Request 对象。...只不过一个是通过依赖注入当前方法参数另一个 request() 方法则是通过全局服务容器来获取 Request 对象。关于依赖注入和服务容器内容都会在后面核心架构相关文章中学习。...既然说到这里了,那么在 Laravel 框架,其实也是对应表单验证功能可以方便地让我们进行表单参数验证。...验证规则,则是在 request validate() 方法配置这些。

8.6K20

Laravel 5.0 之命令及处理程序

本文译 Matt Stauffer 系列文章. ---- 本文中涉及新功能都是关于 Commands ,这些特性在 Laravel 旧版本已经了,但是在 Laravel 5.0 变得更加好用了...,就像前面的例子那样,并且希望命令放入队列执行不是同步执行,那么必须要考虑 Eloquent 模型序列化,这可能会给你带来一些麻烦。...SerializesModels; // ... } Dispatcher DispatchesCommands Trait 你可能注意,在前面的例子,我们可以直接在控制器使用 $this...trait, 你可以直接向你构造函数或者是方法注入 Illuminate\Contracts\Bus\Dispatcher 实例(参见 Laravel 5.0 之方法注入)。...如果你命令是放入队列执行,不需要在处理程序最后执行 $command->delete() 方法。只要你处理程序没有抛出任何异常,Laravel 会假定它已经正确完成,并自动将其从队列移除。

1.7K60

如何在Laravel5.8正确地应用Repository设计模式

现在你应该能在 app/Models 目录中找到刚生成模型 Blog 了吧。这只是一种我喜欢存放模型方式。 现在我们控制器模型,是时候看看我们创建迁移文件了。...在控制器使用 Repository 要开始使用 BlogRepository ,我们首先需要将其注入 BlogController 。...由于 Laravel 依赖注入,我们很容易用另一个来替换它。这就是我们控制器样子: <?...不需要十行代码就可以获取到所需数据,多亏了 repository ,所有这些逻辑都可以在一行代码完成。这对单元测试也很好,因为 repository 方法很容易复用。...RepositoryServiceProvider 我们注入 BlogController BlogRepository ,不是注入 BlogController BlogRepositoryInterface

4.2K31

具有嵌套关系可重用API资源——Laravel5.5

这些步骤旨在建立一个基本 Laravel 5.5 项目,并做了一些初始化设置,包括创建模型、资源类和控制器,并配置使用 SQLite 作为数据库。 2....避免批量赋值是指使用 Laravel 属性来指定哪些字段可以被批量赋值,以防止不受控制数据注入。· 播种数据库attributeName 方式访问模型属性,不必每次都通过模型实例去获取属性。...简化和逐步进行本文着重于学习如何使用 Resource::collection 不是手动实例化类,并将关系数据提供(或不提供)责任委托给控制器。...毕竟,控制器工作是理解请求。这暗示着对于数据包含处理,Laravel 更多地依赖于控制器层面的逻辑,不是在资源转换层实现。

11510

3分钟短文:Laravel控制器用法光速入门

引言 上一章我们介绍了laravel路由注册“花拳绣腿”,样样都是那么优雅实用。路由传递过来参数,在经过中间件验证和导向之后,应该去控制器接受处理了。...本文用最简单示例,让你明白laravel控制器是干什么,以及怎么用。...laravel贴心地把输入数据集成 Request 类内了。...所以我们可以方便地使用依赖注入方式,这样改写 store 方法: public function store(\Illuminate\Http\Request $request) { $task...要查看系统内所有已注册路由,可以使用下面的指令: php artisan route:list 写在最后 本文浅显地介绍了laravel控制器使用,最重要是,resource路由方法默认骨架代码

1.5K10

3分钟短文:Laravel控制器用法光速入门

引言 上一章我们介绍了laravel路由注册“花拳绣腿”,样样都是那么优雅实用。路由传递过来参数,在经过中间件验证和导向之后,应该去控制器接受处理了。...本文用最简单示例,让你明白laravel控制器是干什么,以及怎么用。...laravel贴心地把输入数据集成 Request 类内了。...所以我们可以方便地使用依赖注入方式,这样改写 store 方法: public function store(\Illuminate\Http\Request $request) { $task...要查看系统内所有已注册路由,可以使用下面的指令: php artisan route:list 写在最后 本文浅显地介绍了laravel控制器使用,最重要是,resource路由方法默认骨架代码

1.8K11

30分钟用Laravel实现一个博客

编辑这两个迁移文件 create_blogs // 首先类定义两个方法,up()可以理解为正向操作:创建表, down()可以理解为回滚操作:删除表。...细心你可能发现了,我们数据表和模型名字是区别的:数据表为“小写复数形式”,模型名为“大写单数形式”。创建模型都存在于 /app/ 下。...总结 => 路由定义在浏览器访问某控制器方法地址,控制器完成一系列操作:如果需要操作数据库,需要调用模型,每一个模型对应一张表。...-resouce生成控制器为资源控制器即自带 CURD增删改查 所有方法控制器 ) ( --model 是让生成控制器在参数列表自动帮我们完成依赖注入生成实际变量 ) 根据 三_1 阶段说法,...然后通过文章->评论+s;方法直接获取了属于某篇文章所有评论。 我们学会了创建请求Request,并且在它内部配置验证规则,在控制器通过依赖注入形式验证数据。

7.3K00

Laravel系列7.4】安全相关

其实上面的 npm run dev 操作就是编译了 Laravel 框架自带 Vue 框架,模板走正是 Vue ,文件在 resource/js/Pages ,在这里我们可以找到 Auth/Register.vue...(网页形式也是同理) 自已实现注册、登录 要自己实现登录注册其实非常简单,如果只是网页登录,同样我们还是使用 Laravel 自带那个 users 数据表,然后自定义几个路由和控制器。...中间件守护 在 Laravel 认证体系,中间件守卫职责,包括在配置文件和 Auth 常用方法中都有 guard 这个单词出现。我们在源码主要就来看一下它中间件是如何进行认证守护。...getTokenForRequest() 来获得请求参数 api_token 参数,如果不存在的话,则会使用 request bearerToekn() 方法来获得在头信息 Authorization...防注入 对于注入来说,我们最关心无非就是两种注入问题,一个是 SQL 注入,一个是 XSS 注入。对于 SQL 注入,只要你使用框架 查询构造器 或者 模型 。基本不会有太大注入问题。

3.6K40

深入剖析 Laravel 服务容器

之前在 深度挖掘 Laravel 生命周期 一文,我们去探究 Laravel 究竟是如何接收 HTTP 请求,又是如何生成响应并最终呈现给用户工作原理。...有关 instance 使用方法可以查阅 Laravel 服务容器解析文档,不过我也会在下文中给出相关使用说明。 这里相信大家对「Laravel 服务容器」了一个比较清晰理解了。...Laravel 服务容器使用方法 Laravel 服务容器在使用时一般分为两个阶段:使用之前进行绑定(bind)完成实现绑定接口;使用时对通过接口解析(make)出服务。...比如,我们用户控制器需要获取用户信息,然后在构造函数定义 User 模型作为依赖: <?...更多细节处理还是需要我们进一步深入内核才能发掘出来,但这其实已经差不太多了。兴趣朋友可以亲自了解下其它绑定方法源码解析处理。

8.9K10

Laravel 5.0 之方法注入

本文译 Matt Stauffer 系列文章. ---- Laravel 5.0 , 容器可以对其解析方法进行自动分析, 然后根据类型限制把方法所需要依赖项自动注入....本文介绍这一机制原理, 何时解析, 如何注入等. 依赖注入背景知识 在现代编程实践, PHP 开发者要学会首要知识之一就是使用依赖注入....; }); } } 从例子可以看到, 可以通过构造函数把 Mailer 类注入对象....Laravel 容器让实例化这样一个类变得很容易, 因为它会自动把依赖项注入构造函数. 比如, 我们可以创建该类一个新实例, 但不需要传入 Mailer....$listener = App::make('Listener'); 这很方便, 因为 在应用可以只定义一次 Mailer 具体实现, 不是每次都要指定.

1.1K60

Laravel 5.0 之 表单验证类 (Form Requests)

本文译 Matt Stauffer 系列文章. ---- 让人头痛表单验证 只要你曾经在使用 Laravel 框架过程中试图找到有关用户输入验证最佳实践, 你就应该了解这是一个争论最多并且几乎没有达成共识的话题...说明: 本文中使用 view() 辅助方法代替了旧版本 View::make()....Laravel 会在解析 POST 路由之前自动把用户输入信息传递给相应表单请求, 因此我们所有验证逻辑都可以移到独立于控制器模型之外 FormRequest 对象....提交表单, 你可以看到我们并没有往控制器添加任何一行验证逻辑, 但是验证规则已经生效了. 其它用例 如果对 "新增" 和 "编辑" 不同规则, 或者根据不同输入进行不同验证, 要怎么办呢?...采用条件判断逻辑 rules() 作为一个方法不是属性, 带来好处就是你可以方法添加判断逻辑: ... class UserFormRequest extends FormRequest {

3.8K50

通过 Request 对象实例获取用户请求数据

作为最流行 PHP 框架,Laravel 自然也是为处理用户请求提供了丰富工具集,从收集、验证、到过滤、编排,可谓是一应俱全,接下来,我们通过三四篇教程篇幅来为你详细介绍如何在 Laravel...注入请求对象 在 Laravel ,访问用户输入数据最常用方式,就是通过注入控制器方法 Illuminate\Http\Request 对象实例,通过该实例,我们可以访问所有用户请求数据,不管是什么方式...接下来,我们就可以控制器方法通过 $request 对象实例获取用户请求了,Request 类提供了多种方法来访问用户请求数据。...('name'); 我们还可以为 input 方法传递第二个参数作为默认值,如果请求字段为空的话,则使用该默认值: $site = $request->input('site', 'Laravel学院...注入参数后面): public function form(Request $request, $id) { // ... } 这样,我们就可以控制器方法使用这个 id 参数了,它值会随着路由参数值传递过来

19.7K30

Laravel 5.0 之 Middleware (Filter-Style)

本文译 Matt Stauffer 系列文章. ---- 如果你阅读我之前 Laravel 5.0 系列文章,你可能已经注意路由过滤器(route filters)变化:它们先是移到了单独目录和类结构...提示:过滤器在 Laravel 核心代码依然存在,所以你依然可以使用。但是在需要对路由进行修饰时,更推荐采用是 middleware. Middleware 是什么?...Laravel 默认使用 middleware 来处理加密/解密和 cookies 队列、读取和写入 sessions, 但除此之外你还可以用 middleware 来向请求/响应环中加入你需要任何一种操作层...在 Laravel 5 中有两种主要方法可以绑定 middleware. 两种方法都从 App\Http\Kernel 开始。...不仅如此,middleware 不只是在 Laravel 应用处理请求额外一种强大高效手段,它在其它方面也能有很好表现。

2K40

Laravel API教程:如何构建和测试RESTful API

来源百度百科 资源(Resources) 资源将是actions目标,在我们文章和用户情况下,他们自己端点: /articles /users 在这个laravel api教程,资源将在我们数据模型具有...您可以资源表示在多个数据模型(或根本不在数据库中表示),并且模型完全不受用户限制。最后,您将以适合您应用程序方式来决定如何构建资源和模型。...这样,LaravelArticle在我们方法注入实例,如果没有找到,将自动返回404。...该json()方法触发端点,而其他断言是非常。一个细节assertJson():此方法响应转换为数组搜索参数,因此顺序很重要。assertJson()在这种情况下,您可以链接多个呼叫。...绝对改进空间 - 您可以使用Passport软件包实现OAuth2 ,集成分页和转换层(我推荐使用Fractal),但是我想通过在Laravel创建和测试API基础知识外部包装。

20.3K20

PHPer面试指南-laravel

创建服务容器:从 bootstrap/app.php 文件取得 Laravel 应用实例 $app (服务容器) 创建 HTTP / Console 内核:传入请求会被发送给 HTTP 内核或者 console...分发请求:一旦应用完成引导和所有服务提供者都注册完成,Request 将会移交给路由进行分发。路由分发请求给一个路由或控制器,同时运行路由指定中间件 服务提供者是什么?...对象 A 功能依赖于对象 B,但是控制权由对象 A 来控制,控制权被颠倒,所以叫做「控制反转」,「依赖注入」是实现 IoC 方法,就是由 IoC 容器在运行期间,动态地某种依赖关系注入对象之中。...Facades(一种设计模式,通常翻译为外观模式)提供了一个"static"(静态)接口去访问注册 IoC 容器类。提供了简单、易记语法,而无需记住必须手动注入或配置长长类名。...谈谈 Laravel 和 YII 框架区别 在 YII 框架路由是通过书写 Controller、Action 间接定义路由, Laravel 是在 route 路由文件中直接定义路由入口

97030
领券