QQ 咨询
谢谢打赏
微信交流
432

TP5.0使用助手函数model出现\common\Model\类不存在
时间: 2019-09-20 12:12:15  作者:北桥苏  阅读:(166)

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

 

问题

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

 

思路

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

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

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

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

 

解决

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






用户登录


     QQ登录

我的标签


随机文章

  • 如何在wamp集成环境下快速安装laravel5.2.*框架虽然官方一直强烈推荐使用homestead,…… 查看详情
  • 安卓手机如何快速投屏到windows(10/8.1/7)电脑上前提: 手机和电脑连接的网络必须在同一局域网…… 查看详情
  • 在php中使用对称加密DES3,开发银行卡绑定,实名验证对称加密:对称加密是一种数据加密算法,对一组…… 查看详情

友情链接





Copyright© 2016-2020 北桥苏 & 版权所有    赣ICP备16002525号-1
如有侵权、不妥之处,请联系站长的客服并出示版权证明以便删除。敬请谅解! 站长客服联系方式:QQ2652364582