干货分享,请自行补脑
今天,我们来讲工厂模式的生活loC容器,只需要一条指令就可以生产出超人出来。
在讲解loC容器之前,我们先来了解一个知识点:回调函数,就是通过函数指针来调用的函数。当你把函数的指针作为参数传递给函数另一个函数,当这个指针被用来调用其所指向的函数的时候,我们就说这是回调函数。话不多说,直接上代码:
回调函数的实现代码解读:
1:我们定义了一个叫做calllback()的php函数,这个函数需要两个参数msg1,msg2.
2:使用php内置函数call_user_func_array()函数来进行回调,这个函数需要两个参数,一个是需要回调的函数的函数名字,如图我们已经赋值给$name,另一个参数是一个数组,这个数组的元素是回调函数的参数。我们执行这段代码看看会输出什么?
回调函数执行结果如图,在浏览器中输出了函数内的代码。
我们继续研究,php类中静态方法的回调,如图
类的静态方法的回调 类的静态方法回调结果展示好了,我们来分析这段代码,可以看到,call_user_func_array();函数还是需要传入两个参数,只不过第一个参数变成了一个数组,数组中第一个值是类名第二个值是类中的方法名字,这样的情况下我们就可以完成类中静态方法的调用,效果如图。
继续研究:类中非静态的方法回调
类中非静态方法的实现 类中非静态方法的展示
可以看得出效果其实是一样的。
我们继续研究:在类中定义一个私有属性,并且在方法中调用,然后回调此方法
定义属性,并且在方法中调用,然后回调方法 报错了,在没有对象的情况下使用了$this可见我们的程序在51行出现了错误,$this没有在对象环境中调用。
如果我们创造一个对象出来,同时使用这个对象作为参数传入,同样会报错。
那么,我们如何才能调用对象中的方法呢?
对象方法的回调
我们首先使用原始的字符串方式来调用方法:
字符串方式调用方法 字符串方式调用结果展示,能够正确执行程序结果出来了,但是有一个问题,我们如何将参数传给这个方法呢?
匿名函数 实对象调用实现了
匿名函数的讲解,我们暂时告一段落。
(未完待续)
网友评论