Lumen、Laravel开发问题记录
前言:個(gè)人雜項(xiàng)
2018.5.17 14:55
1. lumne 連接Sqlite時(shí),一直報(bào)錯(cuò):?Call to a member function connection() on null
解決方法:
app.php中打開(kāi)Orm的注釋!!!坑爹,誰(shuí)關(guān)了!!!
?
17:03
2. lumen、laravel配置打印sql
https://blog.csdn.net/zy994914376/article/details/54891068
當(dāng)前,自己配置的是lumen。與laravle 不同的是lumen沒(méi)有make listener的命令,所以有些包需要自己導(dǎo)入。
?
2018.6.1 16:58
1. laravel源碼學(xué)習(xí),自動(dòng)加載的疑惑。關(guān)于spl_autoload_register()
https://segmentfault.com/q/1010000012093950
ps:spl_autoload_register()函數(shù)中隊(duì)列已經(jīng)存在的方法,如果不unregister的話,是一直存在的!之前,我的認(rèn)知是以為只能使用一次,這個(gè)是錯(cuò)誤的。
?
2018.6.4 11:15
1.??laravel源碼學(xué)習(xí),new static的疑惑(門(mén)面的代碼部分)
延遲動(dòng)態(tài)綁定,之前我是了解過(guò)的。但是有點(diǎn)不明白的是,在源碼中為什么要new static,估計(jì)是給其他部分繼承的、
后續(xù),自己看了下有關(guān)的知識(shí),更深層次了解了下new static 與new self 的區(qū)別。
參考:https://blog.csdn.net/qq_25600055/article/details/78549435
自己另一篇講解:
http://www.cnblogs.com/mikusnail/p/9132520.html
?
2. trait 的總結(jié):
1) 優(yōu)先級(jí):當(dāng)前類的方法會(huì)覆蓋trait中的方法,而trait中的方法會(huì)覆蓋基類的方法
2 ) 多個(gè)trait組合:通過(guò)逗號(hào)分隔,通過(guò)use關(guān)鍵字列出多個(gè)trait
3) 沖突的解決:如果兩個(gè)trait都插入了一個(gè)同名的方法,若沒(méi)明確解決沖突將會(huì)產(chǎn)生一個(gè)致命的錯(cuò)誤。為了解決多個(gè)trait在同一個(gè)類中的命名沖突,需要使用insteadof操作符來(lái)明確指定使用沖突方法中的哪一個(gè)。
同時(shí),可以通過(guò)as操作符將其中一個(gè)沖突的方法以另一個(gè)名稱來(lái)引入
4) 修改方法的訪問(wèn)控制:使用as語(yǔ)法可以用來(lái)調(diào)整方法的訪問(wèn)控制
5) trait的抽象方法:在trait中可以使用抽象成員,使得類中 必須實(shí)現(xiàn)這個(gè)抽象方法
6) trait的靜態(tài)成員:在trait中可以用靜態(tài)方法和靜態(tài)變量
7)? trait的屬性定義:在trait中同樣可以定義屬性
?
2018.6.7 13:26
1. laravel 的路由namesapce是從 App\Http\Controllers開(kāi)始的,所以只要從這部分后面開(kāi)始指定即可。
?
2018.6.13? 15:29
1. laravel 中的請(qǐng)求處理管道(其實(shí),大白話是一個(gè)請(qǐng)求進(jìn)入框架中的生命周期)使用的是裝飾者模式
簡(jiǎn)易理解版本的demo():
1 interface Step { 2 public static function go(Closure $next); 3 } 4 5 class FirstStep implements Step { 6 public static function go(Closure $next) { 7 echo 'start' . '<br />'; 8 $next(); 9 echo 'end' . '<br />'; 10 } 11 } 12 13 function goFun($step,$className) { 14 return function() use($step,$className) { 15 return $className::go($step); 16 }; 17 } 18 19 function then() { 20 $steps = ["FirstStep"]; 21 $prepare = function(){ 22 echo 'prepare' . '<br />'; 23 }; 24 $go = array_reduce($steps,"goFun",$prepare); //此處可以精簡(jiǎn)為: call_user_func(); 25 $go(); 26 } 27 28 then();執(zhí)行結(jié)果:
startprepare
end
ps:?
其實(shí),laravel內(nèi)部維護(hù)了一個(gè)請(qǐng)求需要經(jīng)過(guò)哪些步驟類的數(shù)組,通過(guò)順序加載來(lái)達(dá)到前、后中間件的效果。
?
2018.6.14 15:55
1.? Laravel 中獲取文件的.env文件行數(shù)的代碼:
$autodetect = ini_get('auto_detect_line_endings');ini_set('auto_detect_line_endings', '1');$lines = file($filePath, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);ini_set('auto_detect_line_endings', $autodetect);return $lines;ps:
1.??auto_detect_line_endings的設(shè)置(這個(gè),我真的是不看文檔真的不知道,可見(jiàn)author是老司機(jī)啊~)
如果碰到 PHP 在讀取文件時(shí)不能識(shí)別 Macintosh 文件的行結(jié)束符,可以激活 auto_detect_line_endings 運(yùn)行時(shí)配置選項(xiàng)。
2. file函數(shù)的第二個(gè)參數(shù),w3c上只是一個(gè)include_path,其實(shí)不然。(可見(jiàn),平時(shí)還是用手冊(cè)吧)
?
2. :todo
https://www.jianshu.com/p/ee92b36e2839
?
?
2018.6.22 10:35
1. 關(guān)于laravel路由執(zhí)行的代碼,目前尚未深究,先做個(gè)記錄
?
2018.6.28 16:00
1.? 執(zhí)行遷移 php artisan migrate
1071 Specified key was too long; max key length is 1000 bytes
解決方法:
升級(jí)MySql版本到5.5.3以上。(之前我自己升級(jí)過(guò),貌似不行。。。可能姿勢(shì)不對(duì)?)
手動(dòng)配置遷移命令migrate生成的默認(rèn)字符串長(zhǎng)度,在AppServiceProvider中調(diào)用Schema::defaultStringLength方法來(lái)實(shí)現(xiàn)配置:
添加,use Illuminate\Support\Facades\Schema;
boot方法中添加,Schema::defaultStringLength(191);
?
2018.6.29 14:02
1. laravel自定義包開(kāi)發(fā)
https://blog.csdn.net/juner_ge/article/details/51766830
轉(zhuǎn)載于:https://www.cnblogs.com/mikusnail/p/9051122.html
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的Lumen、Laravel开发问题记录的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 面试题总结(21-40)
- 下一篇: Python3基础知识之运算符