久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

PHP變量與類型擴展之反射及其使用

瀏覽:4日期:2022-09-16 09:32:38
一、概述與安裝

PHP 5 具有完整的反射 API,添加了對類、接口、函數(shù)、方法和擴展進行反向工程的能力。 此外,反射 API 提供了方法來取出函數(shù)、類和方法中的文檔注釋。

請注意部分內(nèi)部?API?丟失了反射擴展工作所需的代碼。 例如,一個內(nèi)置的 PHP 類可能丟失了反射屬性的數(shù)據(jù)。這些少數(shù)的情況被認為是錯誤,不過, 正因為如此,它們應該被發(fā)現(xiàn)和修復。

使用這些函數(shù)不需要安裝,它們是 PHP 核心的一部分。

二、使用范例

在反射文檔中存在很多例子,通常位于每個類的 __construct 文檔中。

Example ?Shell 里的一個反射例子(一個終端)

$ php --rf strlen$ php --rc finfo$ php --re json$ php --ri dom

以上例程的輸出類似于:

Function [ <internal:Core> function strlen ] { - Parameters [1] { Parameter #0 [ <required> $str ] }}Class [ <internal:fileinfo> class finfo ] { - Constants [0] { } - Static properties [0] { } - Static methods [0] { } - Properties [0] { } - Methods [4] { Method [ <internal:fileinfo, ctor> public method finfo ] { - Parameters [2] {Parameter #0 [ <optional> $options ]Parameter #1 [ <optional> $arg ] } } Method [ <internal:fileinfo> public method set_flags ] { - Parameters [1] {Parameter #0 [ <required> $options ] } } Method [ <internal:fileinfo> public method file ] { - Parameters [3] {Parameter #0 [ <required> $filename ]Parameter #1 [ <optional> $options ]Parameter #2 [ <optional> $context ] } } Method [ <internal:fileinfo> public method buffer ] { - Parameters [3] {Parameter #0 [ <required> $string ]Parameter #1 [ <optional> $options ]Parameter #2 [ <optional> $context ] } } }}Extension [ <persistent> extension #23 json version 1.2.1 ] { - Constants [10] { Constant [ integer JSON_HEX_TAG ] { 1 } Constant [ integer JSON_HEX_AMP ] { 2 } Constant [ integer JSON_HEX_APOS ] { 4 } Constant [ integer JSON_HEX_QUOT ] { 8 } Constant [ integer JSON_FORCE_OBJECT ] { 16 } Constant [ integer JSON_ERROR_NONE ] { 0 } Constant [ integer JSON_ERROR_DEPTH ] { 1 } Constant [ integer JSON_ERROR_STATE_MISMATCH ] { 2 } Constant [ integer JSON_ERROR_CTRL_CHAR ] { 3 } Constant [ integer JSON_ERROR_SYNTAX ] { 4 } } - Functions { Function [ <internal:json> function json_encode ] { - Parameters [2] {Parameter #0 [ <required> $value ]Parameter #1 [ <optional> $options ] } } Function [ <internal:json> function json_decode ] { - Parameters [3] {Parameter #0 [ <required> $json ]Parameter #1 [ <optional> $assoc ]Parameter #2 [ <optional> $depth ] } } Function [ <internal:json> function json_last_error ] { - Parameters [0] { } } }}domDOM/XML => enabledDOM/XML API Version => 20031129libxml Version => 2.7.3HTML Support => enabledXPath Support => enabledXPointer Support => enabledSchema Support => enabledRelaxNG Support => enabled三、相關擴展

如果你想創(chuàng)建內(nèi)建類的專門版本(比如說,在創(chuàng)建并導出高亮 HTML 時,以易于訪問的成員變量來取代方法或使用實用的方法), 你可以繼續(xù)并擴展它們。

Example #1 擴展內(nèi)置的類

<?php/** * My Reflection_Method class */class My_Reflection_Method extends ReflectionMethod{ public $visibility = array();

public function __construct($o, $m) { parent::__construct($o, $m); $this->visibility = Reflection::getModifierNames($this->getModifiers()); }}/** * Demo class #1 * */class T { protected function x() {}}/** * Demo class #2 * */class U extends T { function x() {}}// 輸出信息var_dump(new My_Reflection_Method(’U’, ’x’));?>

以上例程的輸出類似于:

object(My_Reflection_Method)#1 (3) { ['visibility']=> array(1) { [0]=> string(6) 'public' } ['name']=> string(1) 'x' ['class']=> string(1) 'U'}

如果你重寫了構造函數(shù),記住在寫任何插入的代碼之前要先調(diào)用父類的構造函數(shù)。 不這么做將會導致以下的結果:?Fatal error: Internal error: Failed to retrieve the reflection object

四、反射類

Reflection?— Reflection 類

ReflectionClass?— ReflectionClass 類

ReflectionZendExtension?— ReflectionZendExtension 類

ReflectionExtension?— ReflectionExtension 類

ReflectionFunction?— ReflectionFunction 類

ReflectionFunctionAbstract?— ReflectionFunctionAbstract 類

ReflectionMethod?— ReflectionMethod 類

ReflectionObject?— ReflectionObject 類

ReflectionParameter?— ReflectionParameter 類

ReflectionProperty?— ReflectionProperty 類

Reflector?— Reflector 接口

ReflectionException?— ReflectionException 類

標簽: PHP
相關文章:
主站蜘蛛池模板: a级网站在线观看 | 成人免费一区二区三区视频网站 | 亚洲成人一区二区三区 | 麻豆久久久9性大片 | 欧美成人黄色小说 | 亚洲精选一区二区 | 中文字幕一区二区三区不卡 | 日韩精品一区二区三区在线 | 国产精品高清在线 | 欧美精品一区二区蜜臀亚洲 | 免费成人在线观看 | 中文字幕在线免费 | 精品国产一区二区三区在线观看 | 国产999精品久久久久久 | eeuss国产一区二区三区四区 | 中文字幕在线永久在线视频 | 久久精品在线 | 一区二区中文字幕在线观看 | 久久久成人精品 | 天天久 | 午夜激情视频在线观看 | 天天操夜夜操av | 欧美炮房 | 久久人人爽人人爽人人片亚洲 | 久久久久久久久99精品 | 精品成人一区 | 久久亚洲视频 | 成人免费精品视频 | 亚洲日本欧美日韩高观看 | 欧美嘿咻 | 精品国产一区二区三区成人影院 | 中文字幕亚洲一区二区三区 | 欧美精品亚洲精品 | 欧美一区久久 | 亚洲毛片在线 | 国产精品亲子伦av一区二区三区 | 天天天操操操 | 中文字幕一区二区在线观看 | 久久91精品 | 亚洲欧洲精品成人久久奇米网 | 亚洲夜幕久久日韩精品一区 |