php – __autoload检测并包含接口

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – __autoload检测并包含接口脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我在我的脚本中使用__autoload来根据需要包含类.我的脚本使用类名中的提示来查找包含它的文件.如果它在模型中结束,它在模型目录中,控制器在控制器目录中等.我开始实现接口,因此需要调整我的自动加载器.

理想情况下,当创建对象时,自动装带器将确定对象的文件名,存储位置,并包含该文件.然后它将询问该类,以了解它实现的接口,然后自动包含这些文件.

就像是

function __autoload($classname){
    echo $classname;
    include ("classes/$classname.PHP");
    $interfaces = class_implements($classname,FALSE);
    foreach($interfaces as $name){
        if(!class_exists($name,FALSE)){
        include("interfaces/".$name."inter.PHP");
        }
    }
}

除非我这样做,否则我会收到错误

是不是可以在__autoload()中执行此操作?我是否应该继续依赖命名约定来区分对象类型和存储位置?

解决方法

在定义实现的接口之前,您无法定义类,并且任何未知接口也会触发自动加载功能.这意味着在第3行包含类时,它将再次触发自动加载功能,接口为$classname.现在当从第二个__autoload()返回时 – 它将再次尝试包含接口,这将因“已定义”而失败.

附加:使用__autoload()不建议使用spl_autoload_register()

脚本宝典总结

以上是脚本宝典为你收集整理的php – __autoload检测并包含接口全部内容,希望文章能够帮你解决php – __autoload检测并包含接口所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。