TP5中where里面閉包寫(xiě)法引起的思考

知其然已經(jīng)很難了,為什么要知其所以然?王陽(yáng)明的知行合一,或不僅僅為了知行合一而知行合一。做什么,都是為現(xiàn)實(shí)服務(wù)的。行,為了更好的知,而知,為了更好的行。最終目的,當(dāng)然每個(gè)人不一樣,但一定有。

知其所以然,當(dāng)然是更好的知其然。這樣,不管困難再怎么排列組合,也能得心應(yīng)手。萬(wàn)變不離其宗,同樣的道理。

看一段TP5上面的代碼:

 $data = DB::name('company')->select();
 $data = DB::table('company');

每個(gè)人都有自己的習(xí)慣,有的喜歡用Db::name,有的喜歡用DB::table。也有人,只知道DB::name;當(dāng)然也有人只知道Db::table。

不要感覺(jué)不可思議,我曾是里面的一員,至今記得那個(gè)時(shí)候看到Db::table時(shí)眼睛一亮:還有這樣的?

然后,然后記住了,然后就沒(méi)了……(和別人的差距就在這里)

又過(guò)了好久,想看一下兩個(gè)有什么不同,于是看了一下declaration,一個(gè)鼠標(biāo)點(diǎn)擊的事,一秒鐘的事。有點(diǎn)感覺(jué)了。

image.png

查詢(xún)器query對(duì)象

于是,那時(shí)候了解了查詢(xún)器query對(duì)象。

* @method Query name(string $name) static 指定數(shù)據(jù)表(不含前綴)
* @method Query where(mixed $field, string $op = null, mixed $condition = null)

通過(guò)比較這倆哥們返回值,對(duì)鏈?zhǔn)讲樵?xún)有了感覺(jué)。

 * @method mixed find(mixed $data = null) static 查詢(xún)單個(gè)記錄

再把這哥們加上去,明白了他們不是同一個(gè)山寨的。不過(guò)是搭伙過(guò)日子。這個(gè)時(shí)候,再去理解在where里面加上閉包,很舒服,很自然。

where里面加上個(gè)閉包

$data  = Db::table('banner_item')
            ->where(function ($query) {
                $query->where('id', 'eq', $id);
            })
            ->select();

where里面,是一個(gè)匿名函數(shù)。函數(shù)很熟悉,匿名函數(shù)不過(guò)是少了個(gè)函數(shù)名稱(chēng)。

然后呢?傳過(guò)來(lái)一個(gè)參數(shù),這個(gè)參數(shù)便是query對(duì)象了。有了query對(duì)象,函數(shù)里面的寫(xiě)法便和上面一樣了,想怎么寫(xiě)就怎么寫(xiě)了。我們也知道為什么里面不能鏈上find()或select()了。

最后,便是條件里面如何傳進(jìn)去參數(shù),加上use ($id)

$data  = Db::table('banner_item')
            ->where(function ($query) use ($id){
                $query->where('id', 'eq', $id);
            })
            ->select();

如果再加上我們知道,where有三種寫(xiě)法:表達(dá)式法,數(shù)組法,然后閉包法。這樣,對(duì)理解便更深刻了。

會(huì)寫(xiě)代碼是一種技巧,但是透過(guò)現(xiàn)象看本質(zhì),學(xué)其它東西時(shí),會(huì)更好的接受?;蛘咛嵘粋€(gè)檔次,這種思維很最重要。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Lua 5.1 參考手冊(cè) by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 14,257評(píng)論 0 38
  • 看了一下源碼(Query.php)之后,總結(jié)一下,所有的查詢(xún)執(zhí)行方法(select,find等),在傳入一個(gè)匿名函...
    377b79b94683閱讀 7,642評(píng)論 0 3
  • 那些被吹上天的“豬”,摔死了。 文 青山先生 閱讀聊齋十分鐘,予你一個(gè)刷新三觀(guān)的人生! 01 如果我問(wèn)你,請(qǐng)?jiān)谌?..
    青山聊齋閱讀 513評(píng)論 0 0
  • 文/陳安若 起個(gè)大早去坐車(chē),神清氣爽走路中,前方一大叔騎著車(chē)迎面而來(lái),到我跟前竟然說(shuō)了一聲hello,我面無(wú)表情直...
    陳安若閱讀 1,369評(píng)論 3 3
  • 一步一步,春天的腳步就這樣越來(lái)越近,清明假期出門(mén)祭祖才發(fā)現(xiàn),“忽如一夜春風(fēng)來(lái)”這個(gè)“忽”字用的有多妥帖。昨天還是一...
    小西丫頭閱讀 682評(píng)論 0 0

友情鏈接更多精彩內(nèi)容