thinkphp5關於動態生成二維碼類庫總結;
遇到的最大問題如下;我想大部分人也碰到過,所有覺得有必要總結下;
thinkphp5提示找不到Qrcode類,可是自己明明都放置到了,vendor 目錄下面,怎么還是找不到了?是不是路徑錯了?
上面試根據thinkphp手冊上說的加了使用命名空間,還是報錯,於是我右試了下以下方式還是報錯?我當時百度了看看大多數都是tp3.2的寫法,千篇一律,所以覺得有必要搞定這樣的問題。
這次我連vendor都加上了還是報錯,用官方提供的助手函數 vendor()也報錯,QRcode的類代碼如下;
這些都是存在的,后來我試試了用php 系統函數來獲取路徑看看是不是路徑問題;但是還是報錯;如下;
正常情況下;include_once函數如果路徑錯了會提示的,如下;
這個提示是路徑錯誤問題;我的項目是在public下面,所以就防止了vendor目錄下;PHP函數路徑助手函數,各種引入都報類不存在,
解決方案如下;
1,Vendor 是用來加載第三方類庫的是不假,但是只針對composer類有效;官方手冊說的很明白如下;
那怎么辦了,有的人會說,在新建一個文件目錄,答案也是可以的,由於官方考慮到extend類庫加載,如下;
說的也很清楚;可自定義;如下所示;我放置了在extend目錄下,問題解決了,如下;
這個是我的文件目錄結構如下;
最終效果如下;
總結;1.用框架時一定要遵循他們的約定來用,除非你有能重構。
2,由於在Qrcode官方類下載的不是很完整,大都數都是沒有 命名空間規范,對類,路徑認識不夠所造成的,官方提供的 類沒有 “命名空間 ”需要自己加已改造,
如果不想加可以防止在common目錄下做公共函數用,如下;
3,報找不到類時一定不要急,首先看有沒有命名空間,有沒類的規范,有沒有路徑錯誤,官方手冊細節很重要,官方手冊細節很重要,官方手冊細節很重要,官方提供的助手
類函數也沒有錯,也可重新 再定義 命名空間,加類,tp3.2,比tp5很規范,在tp3,2下能加載但是在tp5上就不一定能夠用上,報錯很正常。
4,一定要注意自己引入的類,是否有命名空間等,,,所有路徑,也要注意,在次奉上各類插件類庫,以下是我的github地址;https://github.com/Hu-Right/thinkphp3.2-
后期會有各類總結。