91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

用php實現反射的方法

發布時間:2021-06-29 10:52:02 來源:億速云 閱讀:153 作者:chen 欄目:開發技術

這篇文章主要講解了“用php實現反射的方法”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“用php實現反射的方法”吧!

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

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

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

PHP反射API會基于類,方法,屬性,參數等維護相應的反射類,已提供相應的調用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作為參數,即可建立User類的反射類

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

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

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

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

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

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

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

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

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

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

感謝各位的閱讀,以上就是“用php實現反射的方法”的內容了,經過本文的學習后,相信大家對用php實現反射的方法這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

剑川县| 铜鼓县| 鹿泉市| 邛崃市| 固始县| 葫芦岛市| 边坝县| 通榆县| 侯马市| 蒙山县| 永寿县| 崇礼县| 新丰县| 岐山县| 宕昌县| 旌德县| 莱州市| 那曲县| 天全县| 个旧市| 册亨县| 江北区| 崇仁县| 松原市| 彰化市| 澄迈县| 会昌县| 资讯| 龙陵县| 鹤壁市| 永定县| 房产| 壤塘县| 四子王旗| 西吉县| 阆中市| 中阳县| 龙门县| 绥德县| 开鲁县| 平阳县|