php ReflectionClass類遍歷類中包含元素的方法

ReflectionClass 類

類內容php

class MyClass {

    const myconst1 = 100000001;
    const myconst2 = [
        1 => '開始時間',
        2 => '結束時間',
    ];

    public $title = '中國移動';
    public $city = '湖南長沙';
    static $type = [
        1 => '男',
        2 => '女',
    ];
    static $create_time = 1530000000;

    public function actionIndex() {
        
    }

    public function actionAdd() {
        
    }

}

$MyClass = new MyClass();  # 實例化類

$rc = new ReflectionClass('MyClass');  # 實例化自定義類的ReflectionClass信息

 

獲取靜態成員屬性數組

/**
 * 獲取靜態成員屬性
 * static成員可以限制外部的訪問,由於static的成員是屬於類的,是不屬於任何對象實例,是在類第一次被加載的時候分配的空間,其餘類是沒法訪問的,只對類的實例共享,能必定程度對類該成員造成保護
 * 在類的外部不須要實例而直接使用類名就能夠訪問靜態的成員, 固然,實例化後也可訪問
 */
echo MyClass::$create_time;
echo $MyClass::$create_time;

 

獲取靜態成員屬性的name->value函數

/**
 * 獲取靜態成員屬性的name->value
 */
$v = $rc->getStaticProperties();   # 獲取靜態(static)屬性
print_r($v);

 

 

獲取函數(方法體)spa

/**
 * 獲取函數(方法體)
 */
$v = $rc->getMethods();    # 獲取方法的數組
print_r($v);
foreach ($v as $value) {
      echo $value->getName();
      echo "\n\r";
}

 

 

獲取屬性.net

/**
 * 獲取屬性
 */
$v = $rc->getProperties();  # 獲取一組屬性
print_r($v);
# 獲取屬性的name與值
foreach ($v as $value) {
    $value = $value->getName();    # 獲取對象name
    if (isset($MyClass::$$value)) {  # 靜態成員屬性
        print_r([$value => $MyClass::$$value]);
    } elseif (isset($MyClass->$value)) {  # 成員屬性
        print_r([$value => $MyClass->$value]);
    }
}

 

獲取自定義常量code

/**
 * 獲取自定義常量
 */
echo MyClass::myconst1;

 

 遍歷自定義常量對象

/**
 * 遍歷自定義常量
 */
$v = $rc->getConstants();   # 獲取一組常量
print_r($v);

相關文章
相關標籤/搜索