为什么说 facade 是容器中可用类的静态代理
代理,是一种设计模式,一般可以分为静态代理和动态代理。
比如有N个类,每个类都有不同的方法,想要实现在调用每个类的方法时都输出:正在调用XX的XX方法。
这个时候就可以用动态代理,即可以传入类名,然后利用反射以及_call来实现
当创建一个facade时,需要指定被代理的类名,这里确实可以说明是静态代理,因为被代理对象已经明确了,但因为利用了__callStatic
和反射,实现过程是个动态的。
难道是因为php的__call
和_callStatic
特性,并不需要再区分是静态代理还是动态代理?
对于PHP版的代理模式,搜索动态代理,都用到了_call
和反射,我就陷入这些概念里了。
推荐文章: