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