小编给大家分享一下PHP自动加载机制,spl_autoload_register()函数,PHP类自动加载是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!
*包括和需要功能是一样的,它们的不同在于包括出错时只会产生警告,而需要会抛出错误终止脚本。
* include_once和包括唯一的区别在于include_once会检查文件是否已经引入,如果是则不会重复引入。
spl_autoload_register()函数是实现自动加载未定义类功能的的重要方法,所谓的自动加载意思就是我们的新一个类的时候必须先包括或者需要的类文件,如果没有包括或者需要,则会报错。那这样我们就必须在文件头部写上许多包括或需要文件,非常麻烦,
为了使得没有包括或者需要类的时候也正常新的一个类,所以有了自动加载的概念,也就是说新的一个类之前不用事先包含类文件也可以正常新,这样我们的文件头部就不用包含许多包括(要求)。其实这算一种封装!
用spl_autoload_register函数可以实现上面说的功能,我们来看看实现原理。
<强>第一个参数:autoload_function 强>
这是一个函数【方法】名称,可以是字符串或者数组(调用类方法使用)。这个函数(方法)的功能就是,来把需要的新类文件包含包括(requeire)进的来,这新样的时候就不会找不到文件了。其实就是封装整个项目的包括和需要功能。
<强>第二个参数:把强>
此参数设置了autoload_function无法成功注册时,spl_autoload_register()是否抛出异常。
<强>第三个参数:预谋强>
如果是真的,spl_autoload_register()会添加函数到队列之首,而不是队列尾部。
当我们新一个类,并且这个类文件没有被包含时候就会执行这个autoload_function方法
先来看一个错误例子:+ + + + + + + + + + + + + + + + + + + + +
& lt; PHP ?//当我们直接新一个未包含类类文件时候会报的错 objDemo美元=new AutoloadClass ();
<强>正确的使用spl_autoload_register()函数强>
通过下面例子我们可以看的到,当新的一个未包含的类时候,会去执行spl_autoload_register第一个参数函数名的函数,这个函数有一个参数就是需要新的类名,这个函数的功能就是把这个类给包含进来(类名和文件名一致),这样就实现了自动加载功能。原理就是这样,不是很复杂。
& lt; php ?//定义工具类在服务器位置常量 定义(& # 39;TOOLS_ROOT& # 39;, __DIR__。& # 39;/& # 39;);//文件autoloadClass。新的php,需要的文件 类AutoloadClass { 公共函数__construct () {//echo & # 39;你已经包含我了& # 39;; } }//文件autoloadDemo.php文件 spl_autoload_register (& # 39; myAutoLoad& # 39;,真的,真的); 函数myAutoLoad ($ className) { $ classFileName=TOOLS_ROOT !”{} $ className .php"; 包括classFileName美元; }
<>强另外,我们可以改为匿名函数来实现:强>
& lt; php ?//定义工具类在服务器位置常量 定义(& # 39;TOOLS_ROOT& # 39;, __DIR__。& # 39;/& # 39;);//文件autoloadClass。新的php,需要的文件 类AutoloadClass { 公共函数__construct () {//echo & # 39;你已经包含我了& # 39;; } } spl_autoload_register(函数($ className) { $ classFileName=TOOLS_ROOT !”{} $ className .php"; 包括classFileName美元; },真的,真的); objDemo美元=new AutoloadClass ();
以上是PHP自动加载机制,spl_autoload_register()函数,PHP类自动加载是什么的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!