濮阳杆衣贸易有限公司

主頁 > 知識庫 > php提供實現(xiàn)反射的方法和實例代碼

php提供實現(xiàn)反射的方法和實例代碼

熱門標簽:沛縣400電話辦理 江蘇電商外呼系統(tǒng)運營商 聊城電話外呼系統(tǒng)公司 AI電話機器人OEM貼牌 青白江地圖標注 銅川電話機器人價格 德陽中江如何申請400開頭電話 辦理重慶400電話 智能電話機器人好公司門薩維

就算是類成員定義為private也可以在外部訪問,不用創(chuàng)建類的實例也可以訪問類的成員和方法。

PHP自5.0版本以后添加了反射機制,它提供了一套強大的反射API,允許你在PHP運行環(huán)境中,訪問和使用類、方法、屬性、參數(shù)和注釋等,其功能十分強大,經(jīng)常用于高擴展的PHP框架,自動加載插件,自動生成文檔,甚至可以用來擴展PHP語言

由于它是PHP內(nèi)建的oop擴展,為語言本身自帶的特性,所以不需要額外添加擴展或者配置就可以使用。

PHP反射API會基于類,方法,屬性,參數(shù)等維護相應的反射類,已提供相應的調用API。

訪問

假設定義了一個類 User,我們首先需要建立這個類的反射類實例,然后基于這個實例可以訪問 User 中的屬性或者方法。不管類中定義的成員權限聲明是否為public,都可以獲取到。

?php 

namespace Extend;

 

use ReflectionClass;

use Exception;

 

/**

 * 用戶相關類

 * Class User

 * @package Extend

 */

class User{

  const ROLE = 'Students';

  public $username = '';

  private $password = '';

 

  public function __construct($username, $password)

  {

    $this->username = $username;

    $this->password = $password;

  }

 

  /**

   * 獲取用戶名

   * @return string

   */

  public function getUsername()

  {

    return $this->username;

  }

 

  /**

   * 設置用戶名

   * @param string $username

   */

  public function setUsername($username)

  {

    $this->username = $username;

  }

 

  /**

   * 獲取密碼

   * @return string

   */

  private function getPassword()

  {

    return $this->password;

  }

 

  /**

   * 設置密碼

   * @param string $password

   */

  private function setPassowrd($password)

  {

    $this->password = $password;

  }

}

 

$class = new ReflectionClass('Extend\User'); // 將類名User作為參數(shù),即可建立User類的反射類

$properties = $class->getProperties(); // 獲取User類的所有屬性,返回ReflectionProperty的數(shù)組

$property = $class->getProperty('password'); // 獲取User類的password屬性ReflectionProperty

$methods = $class->getMethods();  // 獲取User類的所有方法,返回ReflectionMethod數(shù)組

$method = $class->getMethod('getUsername'); // 獲取User類的getUsername方法的ReflectionMethod

$constants = $class->getConstants();  // 獲取所有常量,返回常量定義數(shù)組

$constant = $class->getConstant('ROLE');  // 獲取ROLE常量

$namespace = $class->getNamespaceName(); // 獲取類的命名空間

$comment_class = $class->getDocComment(); // 獲取User類的注釋文檔,即定義在類之前的注釋

$comment_method = $class->getMethod('getUsername')->getDocComment(); // 獲取User類中getUsername方法的注釋文檔

注意:創(chuàng)建反射類時傳送的類名,必須包含完整的命名空間,即使使用了 use 關鍵字。否則找不到類名會拋出異常。

以上就是php提供了什么來實現(xiàn)反射的詳細內(nèi)容,感謝大家的學習和對腳本之家的支持。

您可能感興趣的文章:
  • PHP的反射動態(tài)獲取類方法、屬性、參數(shù)操作示例
  • php面試實現(xiàn)反射注入的詳細方法
  • PHP反射原理與用法深入分析
  • PHP進階學習之反射基本概念與用法分析
  • php反射學習之不用new方法實例化類操作示例
  • PHP反射學習入門示例
  • PHP反射實際應用示例
  • 用PHP的反射實現(xiàn)委托模式的講解
  • 淺析PHP類的反射來實現(xiàn)依賴注入過程
  • PHP基于反射機制實現(xiàn)自動依賴注入的方法詳解
  • PHP基于反射獲取一個類中所有的方法
  • PHP反射基礎知識回顧

標簽:濟寧 鷹潭 赤峰 南寧 迪慶 山南 三亞 烏魯木齊

巨人網(wǎng)絡通訊聲明:本文標題《php提供實現(xiàn)反射的方法和實例代碼》,本文關鍵詞  php,提供,實現(xiàn),反射,的,方法,;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《php提供實現(xiàn)反射的方法和實例代碼》相關的同類信息!
  • 本頁收集關于php提供實現(xiàn)反射的方法和實例代碼的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    高陵县| 塔城市| 普格县| 庐江县| 莱州市| 淮阳县| 亳州市| 泗阳县| 浦城县| 芷江| 麻栗坡县| 重庆市| 攀枝花市| 崇义县| 福海县| 闸北区| 麻栗坡县| 灵璧县| 青海省| 东兰县| 碌曲县| 广东省| 白玉县| 集贤县| 周口市| 淳安县| 循化| 瓦房店市| 怀宁县| 九台市| 凤城市| 沙雅县| 旬邑县| 江达县| 鄱阳县| 台东市| 阿坝县| 大田县| 湘潭县| 合水县| 隆尧县|