【反射】PHP的反射機制【原創】
1.1 定義
反射,直觀理解就是根據到達地找到出發地和來源。比如說,給你一個光禿禿的物件,可以僅僅通過這個物件就能知道它所屬的類以及擁有的方法。 反射,指在PHP執行狀態中,擴充套件分析PHP程式,匯出或提取出關於類、方法、屬性、引數等的詳細資訊,包括註釋。這種動態獲取資訊以及動態呼叫物件方法的功能稱為反射API。1.2 獲取物件屬性和方法
getMethods和getProperties分別用來獲取物件的所有方法和所有屬性,返回物件陣列,然後通過getName來獲取具體的方法和屬性即可。但都是必須先通過反射獲取類的原型, 即使用<?php
2/**
3 * 使用反射API獲取物件的屬性和方法
4 * Created by PhpStorm.
5 * User: Administrator
6 * Date: 2017/7/10
7 * Time: 15:22
8 */
910class Person3
11{
12 public $name;
13 public $gender;
1415 public function say()
16 {
17 echo $this->name . " is " . $this->gender . "\r\n";
18 }
1920 public function __set($name, $value)
21 {
22 echo "Setting $name to $value \r\n";
23 $this->$name = $value;
24 }
2526 public function __get($name)
27 {
28 if (!isset($this->$name)) {
29 echo '未設定' ;
30 $this->$name = '正在為你設定預設值';
31 }
32 return $this->$name;
33 }
34}
3536$student = new Person3();
37$student->name = 'Tom';
38$student->gender = 'male';
39$student->age = 24;
40$student->say();
4142$reflect = new ReflectionObject($student);
4344// 獲取物件屬性列表
45$props = $reflect->getProperties();
46echo "\r\n物件的屬性有:\r\n";
47foreach ($props as $prop) {
48 echo $prop->getName() . "\n";
49}
50print_r($props);
5152// 獲取物件方法列表
53$methods = $reflect->getMethods();
54echo "\r\n物件的方法有:\r\n";
55foreach ($methods as $method) {
56 echo $method->getName() . "\n";
57}
58print_r($methods);
59相關推薦
【反射】PHP的反射機制【原創】
摘要:主要是參考列旭鬆、陳文著的《PHP核心技術與最佳實踐》的1.5節。 1.1 定義 反射,直觀理解就是根據到達地找到出發地和來源。比如說,給你一個光禿禿的物件,可以僅僅通過這個物件就能知道它所屬的類以及擁有的方法。 反射,指在PHP執行狀態中,擴充套件分析PHP
【java】java反射機制,動態獲取對象的屬性和對應的參數值,並屬性按照字典序排序,Field.setAccessible()方法的說明【可用於微信支付 簽名生成】
modifier 直接 this 字段值 1-1 讓我 toupper ima play 方法1:通過get()方法獲取屬性值 package com.sxd.test.controller; public class FirstCa{ private
JAVA的反射機制【通俗易懂(適合初學者)】
反射是框架設計的靈魂 (使用的前提條件:必須先得到代表的位元組碼的Class,Class類用於表示.class檔案(位元組碼)) 一、反射的概述 JAVA反射機制是在執行狀態中,對於任意一個類,都能夠知道這個類的所有屬性和方法;對於任意一個物件,都能夠呼叫它的任意
【原】Java反射機制的原理及在Android下的簡單應用
轉載地址:http://www.cnblogs.com/crazypebble/archive/2011/04/13/2014582.html 花了幾天時間,研究了一下Java的反射機制。在這裡總結一下這幾天學習的成果,一來分享自己的學習過程
【java】淺析反射
cat trac catch pan print cep div dex 屬性 1,什麽反射 反射就是一種動態編程的技術,可以在運行階段動態的創建對象以及動態調用方法,具體由實參決定。 2,Class java.lang.Class類的實例代表應用程序的類和接口,該類
【原創】源碼角度分析Android的消息機制系列(一)——Android消息機制概述
run 權限 開發 等待 通過 讀取 概述 走了 color ι 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 1.為什麽需要Android的消息機制 因為Android系統不允許在子線程中去訪問UI,即Android系統不允許在子線程中更新UI。 為什麽不允許
【原創】源碼角度分析Android的消息機制系列(二)——ThreadLocal的工作過程
機制 simple hand 這就是 數據存儲 read etc lena 並且 ι 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 在上一篇文章中,我們已經提到了ThreadLocal,它並非線程,而是在線程中存儲數據用的。數據存儲以後,只能在指定的線程中獲取到數據
【原創】源碼角度分析Android的消息機制系列(三)——ThreadLocal的工作原理
沒有 cit gen 管理 pre 靜態 bsp 允許 clas ι 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 先看Android源碼(API24)中對ThreadLocal的定義: public class ThreadLocal<T>
【原創】源碼角度分析Android的消息機制系列(四)——MessageQueue的工作原理
enc 容易 工作 trie oss 當前 within which ptime ι 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 MessageQueue,主要包含2個操作:插入和讀取。讀取操作會伴隨著刪除操作,插入和讀取對應的方法分別為enqueueMes
【原創】源碼角度分析Android的消息機制系列(六)——Handler的工作原理
urn long empty isa pat stat 開啟 it is performed ι 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 先看Handler的定義: /** * A Handler allows you to send and proc
【原創】TCP超時重傳機制探索
sender mic borde 做了 5.5 多次 字節 應用程序 實現 TCP超時重傳機制探索作者:tll (360電商技術)1)通信模型TCP(Transmission Control Protocol)是一種可靠傳輸協議。在傳輸過程中當發送方(sender)向接
【原創】PHP擴展開發入門
-a 相關 make sof 其它 word red 喜歡 pro PHP擴展開發入門作者:wf (360電商技術組) 在我們編寫自己的第一個php擴展之前,先了解一下php的總體架構和執行機制。 php的架構如圖1所看到的。當中一個重要的就是SAPI(
【java】java反射初探 ——“當類也照起鏡子”
urn win att ofo das 函數 完整 exce ttr 反射的作用 開門見山地說說反射的作用 1.為我們提供了全面的分析類信息的能力 2.動態加載類 我理解的“反射”的意義 (僅個人理解哈) 我理解的
Learning-Python【26】:反射及內置方法
回收 hasattr pass ict 不能 setattr hid 運行 opened 反射的概念 可以用字符串的方式去訪問對象的屬性,調用對象的方法(但是不能去訪問方法),Python 中一切皆對象,都可以使用反射。 反射有四種方法: hasattr:hasatt
今日頭條文章js生成cp和as引數轉換為php和python演算法【原創】
今日頭條js生成cp和as引數轉換為php和python演算法 【原創】 cp 和 as 引數實際是對當前時間戳的加密後得到的 JS !function(t) { var i = {};
【原創】PHP除錯技術手冊V1 0 0 PDF
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
php免殺教程【絕對原創】
這個絕對原創! + 首發!個人認為免殺大致分為這幾個方面:1.關鍵字拆分。 比如assert,可以寫成 'a'.'ss'.'e'.'r'.'t'這樣。2.可變變數、引用、可變函式。 &
【Java筆記】通過反射配置檔案執行類中的方法
要求:在一個Test類中呼叫不同類中的方法,不改動Test原始碼,如何做到? 實現方法:將要執行的類名和方法名,以鍵值對的形式卸儲存在文字中,執行哪個類就讀取配置檔案即可。 實現步驟:1.準備配置檔案,鍵值對 &nbs
【學步者日記】C#反射中NonPublic和Instance需要一起使用
完整連結請看: ———————————————————————— 如果在 BindingFlag 中使用 NonPublic/Public 時必須同時(我在看別人的教程時候並沒有強調同時)使用 Static/Instance 否則將會返回null。 參考程式碼 ▼程式碼開始 using System
【原創】Java基礎之Session機制
mem wrap 增加 sha1 info 下載 head 返回 att Session機制 JSESSIONID是Session的標識,當客戶端請求服務器端的時候,服務器端會檢查是否已經給這個客戶端創建過Session,也就是看客戶端的請求中的header是否有Cooki