现在很多框架调用的方法都是Foo::bar()的格式,但是真的是静态方法吗?这种情况在larave中尤其常见,但是在开发过程中很明显,其中一些并不是一成不变的。比如你用的是modelUser,那么每次实例化它都是全新的,不会互相影响。这里用一个神奇的方法__callStatic来举个栗子:hello();$test::hi();//thisis__call:hello//thisis__callStatic:hi当然魔术方法也是一种方式消耗性能。每次调用后,先扫描类,找到方法就会调用,而且这个方法对于代码的整洁和抽象也能有很大的帮助。他们之间必须权衡取舍。下面实现的日志类就是采用这个方法,方法是解析耦合出来的,只要调用指定的接口即可alert('你好');输出:这是Log方法infoarray(4){[0]=>string(6)"good"[1]=>string(6)"learning"[2]=>string(6)"Everyday"[3]=>string(6)"Up"}thisisLogmethodalert:hello可能有小伙伴已经看到了吧,没错!此代码是模仿(复制)的EasyWechat的日志部分,代码片段博客原文
