亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > PHP > 正文

反射調用private方法實踐(php、java)

2024-05-04 23:41:14
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了反射調用private方法實踐(php、java)的相關資料,需要的朋友可以參考下
 

單測中有個普遍性的問題,被側類中的private方法無法直接調用。小拽在處理過程中通過反射改變方法權限,進行單測,分享一下,直接上代碼。

簡單被測試類

生成一個簡單的被測試類,只有個private方法。

 

復制代碼代碼如下:

<?php/** * 崔小渙單測的基本模板。 * * @author cuihuan * @date 2015/11/12 22:15:31 * @version $Revision:1.0$ **/class MyClass {/** * 私有方法 * * @param $params * @return bool */private function privateFunc($params){if(!isset($params)){return false;}echo "test success";return $params;}}

 

單測代碼

 

復制代碼代碼如下:

<?php/*************************************************************************** * * $Id: MyClassTest T,v 1.0 PsCaseTest cuihuan Exp$ * **************************************************************************//** * 崔小渙單測的基本模板。 * * @author cuihuan * @date 2015/11/12 22:09:31 * @version $Revision:1.0$ **/require_once ('./MyClass.php');class MyClassTest extends PHPUnit_Framework_TestCase {const CLASS_NAME = 'MyClass';const FAIL  = 'fail';protected $objMyClass;/** * @brief setup: Sets up the fixture, for example, opens a network connection. * * 可以看做phpunit的構造函數 */public function setup() {date_default_timezone_set('PRC');$this->objMyClass = new MyClass();}/** * 利用反射,對類中的private 和 protect 方法進行單元測試 * * @param $strMethodName string :反射函數名 * @return ReflectionMethod obj  :回調對象 */protected static function getPrivateMethod($strMethodName) {$objReflectClass = new ReflectionClass(self::CLASS_NAME);$method = $objReflectClass->getMethod($strMethodName);$method->setAccessible(true);return $method;}/** * @brief :測試private函數的調用 */public function testPrivateFunc(){$testCase = 'just a test string';// 反射該類$testFunc = self::getPrivateMethod('privateFunc');$res = $testFunc->invokeArgs($this->objMyClass, array($testCase));$this->assertEquals($testCase, $res);$this->expectOutputRegex('/success/i');// 捕獲沒有參數異常測試try { $testFunc->invokeArgs($this->transfer2Pscase, array());} catch (Exception $expected) {$this->assertNotNull($expected);return true;}$this->fail(self::FAIL);}}

 

運行結果

cuihuan:test cuixiaohuan$ phpunit MyClassTest.php PHPUnit 4.8.6 by Sebastian Bergmann and contributors.Time: 103 ms, Memory: 11.75MbOK (1 test, 3 assertions)

關鍵代碼分析

封裝了一個,被測類方法的反射調用;同時,返回方法之前處理方法的接入權限為true,便可以訪問private的函數方法。

 

復制代碼代碼如下:

/** * 利用反射,對類中的private 和 protect 方法進行單元測試 * * @param $strMethodName string :反射函數名 * @return ReflectionMethod obj  :回調對象 */protected static function getPrivateMethod($strMethodName) {$objReflectClass = new ReflectionClass(self::CLASS_NAME);$method = $objReflectClass->getMethod($strMethodName);$method->setAccessible(true);return $method;}

 

下面給大家分享java中利用反射調用另一類的private方法

我們知道,Java應用程序不能訪問持久化類的private方法,但Hibernate沒有這個限制,它能夠訪問各種級別的方法,如private, default, protected, public. Hibernate是如何實現該功能的呢?答案是利用JAVA的反射機制,如下: 

<span style="font-size:14px;">import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; public class ReflectDemo {  public static void main(String[] args) throws Exception {   Method method = PackageClazz.class.getDeclaredMethod("privilegedMethod", new Class[]{String.class,String.class});    method.setAccessible(true);   method.invoke(new PackageClazz(), "452345234","q31234132");  } } class PackageClazz {  private void privilegedMethod(String invokerName,String adb) {   System.out.println("---"+invokerName+"----"+adb);  } }</span> 

輸出結果為:---452345234----q31234132



注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩亚洲精品一区二区三区| 欧美中文字幕在线| 国产99在线|中文| 在线成人激情视频| 亚洲精选中文字幕| 久久99青青精品免费观看| 欧美黑人性猛交| 亚洲网站视频福利| 欧美日韩国产精品一区| 大胆欧美人体视频| 国产精品黄视频| 成人亚洲综合色就1024| 色爱av美腿丝袜综合粉嫩av| 欧美视频中文字幕在线| 色综合影院在线| 亚洲影视九九影院在线观看| 欧美放荡办公室videos4k| 亚洲伊人一本大道中文字幕| 在线亚洲午夜片av大片| 欧美性猛交xxxx乱大交| 7777kkkk成人观看| 久久综合久久88| 最近2019中文免费高清视频观看www99| 97人人做人人爱| 清纯唯美亚洲激情| 欧美午夜性色大片在线观看| 日韩欧美精品中文字幕| 66m—66摸成人免费视频| 亚洲精品自拍偷拍| 国产精品久久久久久久电影| 欧美中文在线字幕| 亚洲日本成人女熟在线观看| 国产精品美女免费| 国产精品99久久久久久久久| 欧美成人性生活| 亚洲欧美色婷婷| 亚洲精品91美女久久久久久久| 国产精品激情av电影在线观看| 亚洲欧美中文日韩在线| 国产成人免费av电影| 欧美孕妇毛茸茸xxxx| 国产亚洲精品激情久久| 国产精品对白刺激| 久久久999精品免费| 美女啪啪无遮挡免费久久网站| 日韩欧美中文字幕在线播放| 欧美一区二区三区四区在线| 欧美日韩国产成人在线观看| 亚洲精品xxxx| 欧美精品18videos性欧美| 久久激情五月丁香伊人| 91在线免费视频| 久久在线观看视频| 亚洲欧美中文日韩v在线观看| 久久在精品线影院精品国产| 国产精品久久久久9999| 中文字幕av一区中文字幕天堂| 久久91超碰青草是什么| 超薄丝袜一区二区| 成人欧美一区二区三区在线湿哒哒| 日韩av片免费在线观看| 欧美视频在线免费| 久久久久国产精品免费网站| 97国产在线视频| 中文字幕日韩精品在线观看| 亚洲电影成人av99爱色| 亚洲国产精久久久久久久| 欧美在线观看日本一区| 欧美巨大黑人极品精男| 久久九九有精品国产23| 中文字幕日韩av| 日韩福利视频在线观看| 欧美日韩一区二区在线| 国产精品免费在线免费| 日本精品视频网站| 欧美激情在线一区| 国产精品久久久久久av下载红粉| 国产视频久久久久| 亚洲色图日韩av| 欧美二区乱c黑人| 国产精欧美一区二区三区| yellow中文字幕久久| 欧美日本在线视频中文字字幕| 国产精品影片在线观看| 精品中文字幕在线2019| 亚洲精品有码在线| 国产成人免费91av在线| 一区二区av在线| 国产精品久久国产精品99gif| 日韩中文字幕亚洲| 一区二区三区高清国产| 精品国产91乱高清在线观看| 欧美精品激情在线观看| 欧美www在线| 欧美亚洲国产成人精品| 久久露脸国产精品| 91美女片黄在线观| 久久久久久97| 亚洲嫩模很污视频| 亚洲午夜激情免费视频| 色妞色视频一区二区三区四区| zzijzzij亚洲日本成熟少妇| 按摩亚洲人久久| 欧美色videos| 久久天天躁日日躁| 精品亚洲va在线va天堂资源站| 久久久免费精品视频| 欧美电影在线播放| 久久久久99精品久久久久| 91久热免费在线视频| 亚洲精品国产电影| 日韩成人av在线| 久久国产一区二区三区| 97国产成人精品视频| 国产精品久久9| 在线观看日韩专区| 97视频在线观看免费高清完整版在线观看| 成人精品一区二区三区电影免费| 亚洲成人激情在线观看| 国产精品免费视频久久久| 亚洲性夜色噜噜噜7777| 91精品国产乱码久久久久久久久| 欧美电影免费观看高清完整| 欧美在线亚洲一区| 亚洲视频国产视频| 久久久国产在线视频| 欧美三级免费观看| 欧美中文在线视频| 国产一区二区视频在线观看| 亚洲精品白浆高清久久久久久| 中文字幕视频一区二区在线有码| 亚洲aⅴ男人的天堂在线观看| 亚洲精品国产电影| 欧美猛交ⅹxxx乱大交视频| 国产精品入口日韩视频大尺度| 久久成年人免费电影| 国产主播在线一区| 国产精品中文久久久久久久| 欧美午夜电影在线| 欧美激情一区二区三区在线视频观看| 久久影院中文字幕| 日本精品va在线观看| 亚洲欧美中文字幕| 国产深夜精品福利| 日本高清不卡在线| www.欧美精品一二三区| 国产精品入口福利| 黄色一区二区在线| 亚洲欧美在线免费| 亚洲美女精品成人在线视频| 成人黄色中文字幕| 午夜精品久久久久久久男人的天堂| 亚洲欧洲在线免费| 国产精品久久久久久久久久99| 欧美肥老太性生活视频| 欧美专区福利在线| 黄色精品一区二区| 国产91免费看片| 亚洲国产精品成人va在线观看| 日韩高清不卡av| 国产一区二区三区直播精品电影| 亚洲精品二三区| 欧美亚洲在线播放| 亚洲人成网站777色婷婷|