底层原理探析
--
在实例化的时候
PHP
在底层到底做了什么
传智上海校区 崔长春老师
在
PHP中,我们通过
new className()
得到一个类的对象,那么在实例化的过程中,
PHP
在底层到底做了什么?为什么我们可以通过自动加载类函数能将别处的类文件
require
进来?。。。
当我们在
new一个类且没有获得对象之前,
PHP
在底层先检查当前文件中有无这个类,如果有对应的类,则得到对象而不是调用自动加载类函数。但如果当前程序文件没有这个类,他会检查本程序文件中有无自动加载类函数,如果有自动加载类函数,则传递类名到该函数并调用该函数,等自动加载类函数执行完毕之后,再次检查当前文件是否有类文件,如果已经加载进来,则直接实例化并得到对象,如果没有找到这个类,则直接报错。具体过程模拟如下:
验证:
1. 当存在自动加载类函数但是当前文件中有类程序时,不会调用自动加载类函数;
2.
当存在自动加载类函数但是当前文件中没有类程序,则会调用自动加载类函数
;