File tree Expand file tree Collapse file tree 1 file changed +9
-9
lines changed Expand file tree Collapse file tree 1 file changed +9
-9
lines changed Original file line number Diff line number Diff line change 1- ## 新特性trait在Laravel中的应用
1+ ## 新特性 trait 在 Laravel 中的应用
22
33## trait 是什么?
44
55Trait 是为类似 PHP 的单继承语言而准备的一种代码复用机制。Trait 为了减少单继承语言的限制,使开发人员能够自由地在不同层次结构内独立的类中复用 method。Trait 和 Class 组合的语义定义了一种减少复杂性的方式,避免传统多继承和 Mixin 类相关典型问题。
66
77Trait 和 Class 相似,但仅仅旨在用细粒度和一致的方式来组合功能。 无法通过 trait 自身来实例化。它为传统继承增加了水平特性的组合;也就是说,应用的几个 Class 之间不需要继承。
88
9- 简单来说trait就是解决php不能实现多继承的 。
9+ 简单来说 trait 就是解决 php 不能实现多继承的 。
1010
1111
1212## 具体的案例
1313
14- 如我们定义类的时候,很多都要做成单例模式,因此我们只需要定一个trait在需要单例的时候use trait就可以了 。下面看下代码
14+ 如我们定义类的时候,很多都要做成单例模式,因此我们只需要定一个 trait 在需要单例的时候 use trait 就可以了 。下面看下代码
1515
1616``` php
1717
@@ -44,19 +44,19 @@ class Db {
4444
4545```
4646
47- ## trait在Laravel中的应用
47+ ## trait 在 Laravel 中的应用
4848
49- laravel中大量的使用到了trait,下面我来拿比较那用的的Laravel Auth来看 ,首先执行
49+ laravel 中大量的使用到了 trait, 下面我来拿比较那用的的 Laravel Auth 来看 ,首先执行
5050
5151``` bash
5252php artisan make:auth
5353```
5454
55- 然后到app /Http/Controllers/Auth/ 目录下找到LoginController,你会发现LoginController中的代码比较少,只定义了一个use AuthenticatesUsers; 处理数据,登录之类的核心功能都不在这个控制器中。我们然后打开这个AuthenticatesUsers,你会发现所有有关login的功能都在这个文件里面 。
55+ 然后到 app /Http/Controllers/Auth/ 目录下找到 LoginController,你会发现 LoginController 中的代码比较少,只定义了一个 use AuthenticatesUsers; 处理数据,登录之类的核心功能都不在这个控制器中。我们然后打开这个 AuthenticatesUsers,你会发现所有有关 login 的功能都在这个文件里面 。
5656
57- 那有同学就会感到疑问了,为什么不直接写到LoginController呢 ?下面我来给大家说下
57+ 那有同学就会感到疑问了,为什么不直接写到 LoginController 呢 ?下面我来给大家说下
5858
59- AuthenticatesUsers 这个里面实现了根login的业务逻辑 ,但是呢?所有的可配置的参数,可重写改的方法你都可以在LoginController中就实现重写 ,这样代码不就简洁了嘛。我们随意找一个举例,我们重写login的验证加入极验验证 。
59+ AuthenticatesUsers 这个里面实现了根 login 的业务逻辑 ,但是呢?所有的可配置的参数,可重写改的方法你都可以在 LoginController 中就实现重写 ,这样代码不就简洁了嘛。我们随意找一个举例,我们重写 login 的验证加入极验验证 。
6060
6161``` php
6262
@@ -86,7 +86,7 @@ class LoginController extends Controller
8686 }
8787
8888 /**
89- * 重写login验证逻辑 ,增加极验验证
89+ * 重写 login 验证逻辑 ,增加极验验证
9090 *
9191 * @param \Illuminate\Http\Request $request
9292 * @return void
You can’t perform that action at this time.
0 commit comments