難道是瘋了,要讀寫物件的私有屬性!

YingFramework發表於2021-06-16

在使用框架的時候,有一個物件,執行框架後已經包裝好了,僅僅是屬性值需求不一樣.
不想繼承重寫物件的類,竟然想到要讀寫物件的私有變數和方法,沒有想到還成功了!
分享給大家,有需要的拿去!

composer require xindong888/tools

1 getPrivateAttrOne 通過轉成陣列的方式獲取物件的私有屬性

2 getPrivateAttr 通過匿名函式來獲取物件的私有欄位的值

3 generateTree 通過引用進行無限分類

4 setPrivateAttr 設定物件私有屬性值

方法呼叫均為靜態

Com\Xjke\Tools\T::getPrivateAttrOne(object $obj, string $name)

 /** 
 * 獲取物件的私有屬性值 
 * @param object $obj object 物件
 * @param string $name string 私有欄位的名稱 
 * @return mixed 返回的是欄位的值 
 */

Com\Xjke\Tools\T::getPrivateAttr(object $obj, string $name)

 /**
 * 通過匿名函式來獲取物件的私有欄位的值 
 * @param $obj object 物件 
 * @param $name string 欄位的名稱 
 * @return mixed 返回的是欄位的值
 */

Com\Xjke\Tools\T::generateTree($data, $id = ‘id’, $pid = ‘pid’, $children = ‘children’)

 /** 
 * 通過引用進行無限分類 
 * @param array|mixed $data 平面帶有父ID的資料 
 * @param string $id id名稱 
 * @param string $pid 父欄位的名稱 
 * @param string $children 子屬性名稱 
 * @return array 返回樹狀結構的值 
 */

Com\Xjke\Tools\T::setPrivateAttr(object &$obj, array $arr)

 /** 
 * 設定物件的私有屬性值 
 * @param $obj object 必須是物件 
 * @param $arr array 陣列 必須是陣列 ['屬性名'=>'屬性值']
 * @return bool 
 */
本作品採用《CC 協議》,轉載必須註明作者和本文連結
金鷹線上

相關文章