首頁  >  文章  >  php框架  >  ThinkPHP容器之Countable巧用

ThinkPHP容器之Countable巧用

咔咔
咔咔原創
2020-10-12 12:29:171553瀏覽

本文將解釋一個冷門的知識點,如果不去看原始碼時根本不會了解的一個知識點,那就是countTable的使用。

六、Container容器類別剖析之Countable巧用

##關於Countable這塊內容一直沒想好是否是文章的形式寫出展現給大家,但是在後期閱讀源碼時大量的出現了Countable的應用。

為了大家能看懂每一個技術點,咔咔還是寫了出來。

這個知識點只是為了給大家展示一下怎麼用,在後文中會提到跟count的關聯。

在檔案

thinkphp/library/think/Container.php中,就可以直接看到使用了Countable接口,實作了它!

ThinkPHP容器之Countable巧用在這裡插入圖片描述
來到

Countable這介面中,我們只能看到一個方法就是count() .

根據程式碼中

Count elements of an object這行註解可以了解到,這個介面是計算物件的元素

在看原始碼的過程中我們需要對其註解先看一遍,即使不會英文那也有翻譯軟體呢!會給你更好的理解。

ThinkPHP容器之Countable巧用根據PHP文件的說明在深入了解。

文件說明當你執行count()方法時就等於在執行上邊的abstract public Countable::count ( void ) : int抽象方法。

ThinkPHP容器之Countable巧用實戰案例

光說不幹,事事落空;又說又乾,馬到成功。直接開乾

新檔案kaka/container/countableTest.php,並且加入以下內容

ThinkPHP容器之Countable巧用接著在檔案application/index/controller/ Container.php中學會使用Countable。

這裡注意一下用法,是直接使用count();

ThinkPHP容器之Countable巧用ThinkPHP容器之Countable巧用

#Countable中的count()跟平常使用count( )方法有什麼差別

順便來看看PHP原始碼中的解釋

可以看到第一個參數可以是陣列也可是是countable

咔咔的理解是Countable只是重寫了SPL中的count方法,為了就是方便自訂自己需要的統計規則而已。

<span style="display: block; background: url(https://my-wechat.mdnice.com/point.png); height: 30px; width: 100%; background-size: 40px; background-repeat: no-repeat; background-color: #282c34; margin-bottom: -7px; border-radius: 5px; background-position: 10px 10px;"></span><code class="hljs" style="overflow-x: auto; padding: 16px; color: #abb2bf; display: -webkit-box; font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; font-size: 12px; -webkit-overflow-scrolling: touch; padding-top: 15px; background: #282c34; border-radius: 5px;">int count ( mixed <span class="hljs-variable" style="color: #d19a66; line-height: 26px;">$array_or_countable</span> [, int <span class="hljs-variable" style="color: #d19a66; line-height: 26px;">$mode</span> = COUNT_NORMAL ] )<br/></code>

接下來就是針對框架裡邊的容器進行剖析,一步一步的追溯到根源。

堅持學習、堅持寫博、堅持分享是咔咔從業以來一直所秉持的信念。希望在偌大互聯網中咔咔的文章能帶給你一絲絲幫助。我是咔咔,下期見。

以上是ThinkPHP容器之Countable巧用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn