首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 反射利器:檢查類、函數、方法是否存在與獲取名稱的魔術常量與函數總覽

     編輯:PHP 綜合知識

存在性檢查函數

函數用途回傳
function_exists($name)檢查函數是否已定義bool
is_callable($var)檢查變數是否為合法可呼叫結構bool
class_exists($name)檢查類別是否已定義bool
method_exists($obj, $method)檢查物件/類別是否有某方法bool

魔術常量(編譯期解析)

常量說明PHP 版本
__FUNCTION__當前函數名稱(區分大小寫)4.3.0+
__CLASS__當前類別名稱(區分大小寫)4.3.0+
__METHOD__當前類別方法名稱(區分大小寫)5.0.0+

注意: 前後各兩個底線 _ _。

反射獲取類別資訊

函數說明
get_class($obj)取得物件所屬類別名稱
get_class_methods($class)取得類別所有方法名陣列
get_class_vars($class)取得類別所有屬性名陣列

實戰範例

class Demo {
    public $name = 'test';
    public function run() { echo __METHOD__; }
}

$obj = new Demo();
var_dump(function_exists('run'));        // false(非全域函數)
var_dump(method_exists($obj, 'run'));    // true
var_dump(class_exists('Demo'));          // true
var_dump(get_class($obj));               // "Demo"
var_dump(get_class_methods('Demo'));     // ["run"]
var_dump(get_class_vars('Demo'));        // ["name" => "test"]

進階:ReflectionClass 完整反射

$rc = new ReflectionClass('Demo');
echo $rc->getName();           // 類別名
echo $rc->getFileName();       // 定義檔案
echo $rc->getStartLine();      // 起始行號
print_r($rc->getMethods());    // 所有方法 ReflectionMethod 陣列
print_r($rc->getProperties()); // 所有屬性 ReflectionProperty 陣列
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved