一般來說 , 在 Class 的外部是無法調用其私有方法,這也是 Private 字面的意思 , 但是一些很特殊很特殊的情況下 , 如果真的需要調用,是否可以呢?
其實可以通過使用類的反射來實現,下面是具體的代碼:
function wpjam_call_method($object, $method, ...$args){ if(!method_exists($object, $method)){ return; } $reflection = new ReflectionMethod(get_class($object), $method); $is_public = $reflection->isPublic(); if($is_public){ $callback = [$object, $method]; }else{ $callback = $reflection->getClosure($object); } return call_user_func_array($callback, $args); }【沒想到吧,PHP 中在類的外部也可以調用私有方法!】簡單解釋一下,首先還是簡單判斷對象該方法是否存在,接著獲取對象方法的反射,然后判斷一下是不是公共的方法,如果是公共就正常調用,不是則獲取該方法的閉包,最后使用回調的方式來調用 。
這個函數可以讓你調用對象的私有或者受保護方法 , 建議只在一些很特殊的情況下才使用,為了方便大家調用,新版的 WPJAM Basic 也會集成該函數 。
- 沒想到!用這3個軟件,網頁文字轉語音播報并不難
- 很想進行虛擬直播?那就看看這份教程吧
- ?女朋友喜歡去酒吧怎么辦,女朋友經常出去KTV酒吧
- 衡山路酒吧一條街 衡山路酒吧
- 長春休閑吧 長春休閑
- 長治新天地網吧在哪 長治新天地網
- ?張雨綺李柄熹被曝戀情,網友表示一把年紀了就算了吧!
- ?姜潮和麥迪娜兩人的戀情是怎么開始的?一起來揭秘一下吧!
- 《奔跑吧兄弟》節目特色有哪些
- 10個生活小妙招,對付小毛病特別管用,收藏吧
