日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

PHP反射的优点,PHP 反射使用和理解

發布時間:2024/2/28 php 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP反射的优点,PHP 反射使用和理解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

反射機制簡介

之前已經介紹過Java反射機制的簡單使用,所有的反射機制的思想作用等都是類似的,下面就一起來了解一下PHP反射機制。

個人理解:反射機制就是可以利用類名或者一個類的對象來獲取關于這個類的一系列信息(類的變量,方法),然后又就可以利用得到的類的信息實例化一些類的對象

官方給的簡介:反射 API,有 對類、接口、函數、方法和擴展進行反向工程的能力。 此外,反射 API 提供了方法來取出函數、類和方法中的文檔注釋。

一般在框架中使用到反射機制比較多(控制反轉),正常情況下一般使用不到反射的

反射機制的使用

常用的類

ReflectionClass 通過類名獲取類的信息

ReflectionObject 通過類的對象獲取類的信息

代碼,還以之前介紹Java反射的Worker類為例

worker.php:

class Worker{

//工人的一些屬性

private $name_;

private $age_;

private $salary_;

//構造方法

public function __construct($name,$age,$salary){

$this->name_ = $name;

$this->age_ = $age;

$this->salary_ = $salary;

}

//輸出工人信息的方法

public function show(){

echo "年齡".$this->salary_;

echo "姓名".$this->name_;

echo "工資".$this->salary_;

}

//__toString方法

public function __toString(){

return "年齡:".$this->age.",姓名:".$this->name."工資:".$this->salary;

}

}

下面可以通過反射機制獲取類的信息

注 getObjectOfRuntimeClass.php 該文件和worker.php 在一個文件夾下

include 'worker.php';

//通過類名獲取

$workClass_by_classname = new ReflectionClass('Worker');

//通過類的實例對象獲取

$w = new Worker("小明",20,20);

$workerClass_by_classinstance = new ReflectionObject($w);

//因為ReflectionObject是ReflectionClass的子類,所以workClass_by_classname的方法,workerClass_by_classinstance同樣適用

//下面利用workClass_by_classname對象獲取類的一些屬性

//獲取類名

echo $workClass_by_classname->getName();

//獲取類的方法列表

var_dump($workClass_by_classname->getMethods());

//獲取類的屬性

var_dump($workClass_by_classname->getProperties());

//利用反射得到方法,并執行該方法

$worker = $workClass_by_classname->newInstance("小明",20,20);

$show_method = new ReflectionMethod('Worker','show');

$show_method->invoke($worker);

//利用反射機制得到屬性,并設置值

$property = $workClass_by_classname->getProperty('name_');

$property->setAccessible(true);

var_dump($property->getValue($worker));

$property->setValue($worker ,'小紅');

var_dump($property->getValue($worker));

參考:https://www.cnblogs.com/phpper/p/8452520.html

除了這些外,PHP反射還有其他的功能,具體可參考PHP手冊的反射部分

如需轉載請注明出處:http://www.cnblogs.com/zhuchenglin/p/8890451.html

總結

以上是生活随笔為你收集整理的PHP反射的优点,PHP 反射使用和理解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。