PHP Reflection 應用集 用來讀取function, class 內容資

前言

PHP Reflection 最早出在php 5.0的時代就已經有了,Reflection可以用來讀取某個class的原始碼片段描述,或者function內容等等資訊,這次要來整理一下幾個應用場景

1.讀取Model class中記錄的自行定義的資料

2.讀取Model class中原有定義的Relation,例如has many, has one 等等

3.讀取某個function定義的Attribute

 

參考連結

https://developer.aliyun.com/article/33171

https://www.cnblogs.com/phpphp/p/17807799.html

PHP reflection API fundamentals

讀取Model class中記錄的自行定義的資料

在某次的需求中,我們做到了讓controller自動判定哪些前端傳過來的欄位需要做檔案處理,因此我們將這些需要被當成檔案處理的資訊記錄在Model中,如以下

這樣子描述,我們就可以知道要寫入Customer這張表的資料有一個叫做files的欄位需要經過檔案處理才能寫入資料庫,這樣一來我們就可以在controller中像這樣處理它

這時候可以預期$file_columns會是Customer Model中寫的”files”一個欄位

這樣就可以搭配前端傳過來的欄位照到對應的”files”來做剩下的檔案處理啦[可以參考這篇]

 

讀取Model class中原有定義的Relation,例如has many, has one 等等

如果你想到取得一個Model Class中定義的relation list,可以像以下這樣做

Model Class中我們先把relation定義好

接著在Controller中就可以透過以下操作取得contact_list,以及identity_list兩者

 

讀取某個function定義的Attribute

上一篇,我們提到了如何定義Attribute,並且把它拿出來做使用

PHP Attribute Laravel開發環境應用集

這邊我們就詳細來看一下怎麼透過Reflection取得Attribute

假設我們有一個Controller定義如下

那麼,你可以寫一個Artisan Command就能查詢所有API的參數條件了,大概像這樣子

$Api_routes_data儲存的結果就是所有API的Controller中Attribute所描述的內容以及URi , method name等等資訊啦

以上,近期開發中運用Reflection的紀錄