• TP5.0使用助手函数model出现commonModel类不存在


        在ThinkPHP5.0中有一个助手助手函数model(),可以实例化具体的模型,包括分层模型,只要传入类名(第一个参数),分层名(第二个参数)。这个函数其实是ThinkPHP框架Loader中的一个静态方法,可以打开"thinkphplibrary hinkLoader"的380行左右查看,参数和实现方法可以自行查看。

    问题

        在本地也就是windows环境下,我通过使用model实例自定义的模型类正常调用方法,放到服务器上(linux),发现模型类找不到,出现类似“类不存在:appcommonModelArticleVote”。所以就去找Loader中的model方法,因为使用了model肯定是先去调用里面的静态函数,然后根据传入的参数实例化返回,有点像工厂模式。

    思路

    1. 检查使用model函数中,传入的模型名和分层名是否都存在,也就是在application项目里有没有对应的模型分层名字的文件夹。

    2. thinphp5.0中项目文件夹需要是小写开头,比如model,controller。

    3. 注意定义的模型类的命名空间,是否存在大小写混乱。

    4. 出现"commonModelArticleVote",注意"common"就是Loader中model方法走了else代码块。

    解决

        发现了是为什么有一个"common"是因为定义的类实例化的时候未找到,那就是在model()使用时传入的参数有错,要么就是定义的模型类的命令空间有误。可以在Loader的静态方法中打断点查看在实例类时的命名空间分别是什么,然后使用class_exists函数查看是否存在,再认真看一些命名空间。最后发现果然是在model助手函数中传入第二个参数(分层名)和模型类的命名空间没有保持一致,一个大写,一个小写。

  • 相关阅读:
    汉语-词语:关怀
    心理学-交流:我真的关心ta,却不知道如何表达 | 如何科学地表达关心?
    汉语-词语:关心
    汉语-词语:安慰
    医疗时鲜资讯:医疗行业未来的变革(续前篇)
    字典转模型的过程中,空值和id特殊字符的处理
    最简单的基于FFmpeg的移动端样例附件:Android 自带播放器
    创建存储过程向表中循环加入数据
    分布式事务 原理及使用范例一则
    hdu 1166
  • 原文地址:https://www.cnblogs.com/zerofc/p/11556200.html
Copyright © 2020-2023  润新知