关于php:TP50使用助手函数model出现\common\Model\类不存在

110次阅读

共计 753 个字符,预计需要花费 2 分钟才能阅读完成。

在 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 助手函数中传入第二个参数 (分层名) 和模型类的命名空间没有保持一致,一个大写,一个小写。

 

正文完
 0