通过laravel重设密码的代码快速学习laravel的重要概念-01

    |     2021年4月19日   |   学习偶记   |     评论已关闭   |    936

使用了laravel ui建立了简单的用户注册、忘记密码前端后端页面及功能。[项目传送门:https://github.com/laravel/ui]

因为我的系统是用户名可以是手机,也可以是email。所有需要对代码进行修改。而在修改重设密码的过程中,发现了这次修改,涉及到了laravel的一些重要概念及php初学者搞的不太清楚的概念,所以就用这个代码解释一下Facade 门面 interface 接口 ServiceProvider 服务提供者 以及 服务容器的概念。

先看忘记代码的控制器代码:

代码很简单,只有一个use,然后我们看这个类是如何设计的。

 

Trait 类,是php的一种代码复用机制。要是想要简单理解,可以这样理解:

普通的父类只能类继承(extends)或者接口继承(implements),而Trait类可以多继承。

比如 一个类 车子,里面有属性:启动,停止。

你想做个子类,汽车。然后可以继承车子,然后加一个属性 加油。

而Trait类则是这样来表现。

Trait 类 油,里面有属性:汽油 柴油 加油 燃烧。

Trait 类 车,里面有属性:启动,停止。

你可以做个类,里面直接use 油,车,然后使用 启动 停止 燃烧这3个属性方法。

比较详细的解释:

详细对比php中类继承和接口继承

PHP Trait代码复用类与多继承实现方法详解

PHP中单例模式的使用场景与使用方法讲解

PHP单例模式–三私一公

PHP Trait 使用指南

OK,那么我们就了解第一张图中的代码意思了,就是使用默认的SendsPasswordResetEmails类中的属性和方法。然后我们接着看给邮箱发送链接的主代码。

 

然后我们看一下这个Password::broker()具体做什么的。

我们可以看到password这个类,是继承了Facade这个类。然后里面定义了一些常量,而这些常量是另外一个类提供的。

 

这个类就是接口类,interface类简单说就像一个模板,你的类继承他了以后,接口类的所有方法必须都要实现。而这个模板类只是把方法名字定义了,方法如何实现则没有写,留给你去写。

这个文件的路径是:\vendor\laravel\framework\src\Illuminate\Contracts\Auth\PasswordBroker.php

继承他的类路径是:\vendor\laravel\framework\src\Illuminate\Auth\Passwords\PasswordBroker.php

你可以仔细看看,继承的这个类是否实现了接口类的所有方法。

参看文章:

PHP接口类interface的正确使用方法

php中interface的定义

噢!评论已关闭。