TP5.0使用助手函數model出現\common\Model\類不存在

    在ThinkPHP5.0中有一個助手助手函數model(),能夠實例化具體的模型,包括分層模型,只要傳入類名(第一個參數),分層名(第二個參數)。這個函數實際上是ThinkPHP框架Loader中的一個靜態方法,能夠打開"thinkphp\library\think\Loader"的380行左右查看,參數和實現方法能夠自行查看。php

 

問題

    在本地也就是windows環境下,我經過使用model實例自定義的模型類正常調用方法,放到服務器上(linux),發現模型類找不到,出現相似「類不存在:app\common\Model\ArticleVote」。因此就去找Loader中的model方法,由於使用了model確定是先去調用裏面的靜態函數,而後根據傳入的參數實例化返回,有點像工廠模式。linux

 

思路

1. 檢查使用model函數中,傳入的模型名和分層名是否都存在,也就是在application項目裏有沒有對應的模型分層名字的文件夾。thinkphp

2. thinphp5.0中項目文件夾須要是小寫開頭,好比model,controller。windows

3. 注意定義的模型類的命名空間,是否存在大小寫混亂。服務器

4. 出現"common\ModelArticleVote",注意"common"就是Loader中model方法走了else代碼塊。app

 

解決

    發現了是爲何有一個"common"是由於定義的類實例化的時候未找到,那就是在model()使用時傳入的參數有錯,要麼就是定義的模型類的命令空間有誤。能夠在Loader的靜態方法中打斷點查看在實例類時的命名空間分別是什麼,而後使用class_exists函數查看是否存在,再認真看一些命名空間。最後發現果真是在model助手函數中傳入第二個參數(分層名)和模型類的命名空間沒有保持一致,一個大寫,一個小寫。框架

 

相關文章
相關標籤/搜索