本篇文章介绍php反射学习之不用new方法实例化类操作方法 下面我稍微应用反射类来做点东西,大家知道实例化一个类需要用new 关键字,不用 new 可以吗?答案是可以的,用反射就能实现: 首先创建一个文件 student.php: ?phpclass Student{ public $id; public
本篇文章介绍php反射学习之不用new方法实例化类操作方法 下面我稍微应用反射类来做点东西,大家知道实例化一个类需要用new 关键字,不用 new 可以吗?答案是可以的,用反射就能实现: 首先创建一个文件 student.php:
另新建一个文件run.php
run.php 中make 函数就是我们用来实例化类而编写的函数,第一个参数传入类名,第二个参数是类的构造函数需要传入的参数数据。 根据 Student 的构造函数的参数不同有几种情况:(以下代码,请按不同情况追加到 run.php 中运行) 情况一: 没有提供 $name 的值
在构造函数中$name 没有默认值时,情况一会报错, 你可以稍微修改下 Student类,给 $name 提供一个默认值,这时候就不会报错了。 情况二 提供了 $name 的值
情况三,我们把 student.php 改一下
可以看到,给 Student 类加了一个参数$bag, 类型 是 Bag 这时候运行一下
可以看到构造函数的第三个参数 $bag ,被自动实例化了,然后传递给了 Student 类的构造函数,这个部分很关键,这个地方可以用来实现依赖注入,我们不必在手动实例化对象了,我们可以根据参数的对应的类来自动实例化对象,从而实现类之间的解耦。如果你学过 Laravel的话,你应该对这个很熟悉了。 |
2019-06-28
2019-10-03
2019-07-04
2019-06-22
2019-02-12