在使用框架的時候,有一個物件,執行框架後已經包裝好了,僅僅是屬性值需求不一樣.
不想繼承重寫物件的類,竟然想到要讀寫物件的私有變數和方法,沒有想到還成功了!
分享給大家,有需要的拿去!
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 協議》,轉載必須註明作者和本文連結