84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
由于现在还没有能力直接查看php的底层实现。所以想请问一下php的魔术方法的从构造到运行,大概的实现流程是怎么样的?
希望懂的人不吝赐教
闭关修行中......
并不是把,如果到从C层面来说的话,魔术方法是直接集成在Object对象内的属性,甚至都没放在function_table里,查找方法的速度可以说更快。魔术函数和一般函数从底层架构和实现上是一致的,并没有区别。你这里所说的慢我想应该是某些魔术函数的特性所决定的,比如__get,__set方法,其实现的过程一定比直接操作对象属性来得慢。再如__call方法,不但先要查function_table中有没有方法,而且一般在其中放的也都是兼容性代码,运行时要做较多判断。但是对于__construct这样的函数,就没有上述的顾虑。
并不是把,如果到从C层面来说的话,魔术方法是直接集成在Object对象内的属性,甚至都没放在function_table里,查找方法的速度可以说更快。魔术函数和一般函数从底层架构和实现上是一致的,并没有区别。
你这里所说的慢我想应该是某些魔术函数的特性所决定的,比如__get,__set方法,其实现的过程一定比直接操作对象属性来得慢。再如__call方法,不但先要查function_table中有没有方法,而且一般在其中放的也都是兼容性代码,运行时要做较多判断。但是对于__construct这样的函数,就没有上述的顾虑。