1. 程式人生 > >php 面向物件之反射

php 面向物件之反射

個人對反射定義的理解:

首先得說說什麼叫反射。對於一個新手來說,反射這個概念常常給人一種似懂非懂的 感覺,不知道該如何下手操作。

反射是指:指在PHP執行狀態中,擴充套件分析PHP程式,匯出或提取出關於類、方法、屬性、引數等的詳細資訊,同時也包括註釋。這種動態獲取的資訊以及動態呼叫物件的方法 的功能稱為反射API。反射是操縱面向物件範型中元模型的API,其功能十分強大,可幫助我們構建複雜,可擴充套件的應用。(注意:php中這種反向操作,實在PHP5之後才完全具備)

下面在此我用例項進行說明:

    class  test{
         private
$A; public $B; protected $C; public function test(){ return "this is a test function"; } } //例項化一個反射類ReflectionClass $obj=new ReflectionClass('test'); echo $obj."<br>"; //例項化test類,並訪問其test方法 $obj2=$obj->newInstance(); echo
$obj2->test();

個人例項返回結果:

/** * xxx.php * ============================================== * Copy right 2012-2015 * ---------------------------------------------- * This is not a free software, without any authorization is not allowed to use and spread. * ============================================== * @Author
:YeXianMing * @Email:[email protected] * @Version:zend studio10.6.2 php5.4.38 apache2.2 */
Class [ class test ] { @@ D:\www\MyProjecttest\index5.php 13-21 - Constants [0] { } - Static properties [0] { } - Static methods [0] { } - Properties [3] { Property [ private $A ] Property [ public $B ] Property [ protected $C ] } - Methods [1] { Method [ public method test ] { @@ D:\www\MyProjecttest\index5.php 18 - 20 } } } this is a test function

相關推薦

php 面向物件反射

個人對反射定義的理解: 首先得說說什麼叫反射。對於一個新手來說,反射這個概念常常給人一種似懂非懂的 感覺,不知道該如何下手操作。 反射是指:指在PHP執行狀態中,擴充套

PHP面向物件介面

PHP與大多數面向物件程式語言一樣,不支援多重繼承。也就是說每個類 只能繼承一個父類。 為了解決此問題,PHP引入了介面。 介面的思想是指定了一個實現該介面的類必須實現的一系列方法。 介面是一種特殊的抽象類,抽象類是一種特殊的類,所以介面也是一種特殊的類。   為什

PHP面向物件分頁類

<?php class Page { protected $num;//每頁顯示條數 protected $total;//總記錄數 protected $pageCount;//總頁數 protecte

php面向物件private、protected、public三者許可權控制區別

private protected public 本類內 Y Y Y 子類內 N

PHP面向物件旅:一個介面例項,很好的例子

我們設計一個線上銷售系統,使用者部分設計如下: 將使用者分為,NormalUser, VipUser, InnerUser三種。 要求根據使用者的不同折扣計算使用者購買產品的價格。 並要求為以後擴充套件和維護預留空間。 使用者部分先聲明瞭一個介面User,使用者都是User

PHP面向物件方法重寫與過載

直接程式碼:class father{ public function test(){ echo "father"; } public function tes

php面向物件-延遲繫結複習-132

<span style="font-size:14px;"><?php //01.php /**** 燕十八 公益PHP講堂 論 壇: http://www.zixue.it 微 博: http://weibo.com/Yshiba YY頻

php面向物件過載(overloading)

在java中,過載就是函式或者方法有相同的名稱,但是引數列表不相同的情形,這樣的同名不同引數的函式或者方法之間,互相稱之為過載函式或者方法,這也牽涉到了多型。 在PHP中呢,有人說php沒有多型,那過載呢? PHP所提供的"過載"(overloading)是指動態地"建立"

php面向物件$this->用法簡述

在成員方法中,呼叫成員方法的方法是物件名加方法名,格式就是“物件名->方法名”。但是在定義類的時候,我們往往不知道物件名是什麼,所以就沒法用物件名,這時,我們就要用到偽變數$this。 什麼是$this? $this的意思就是本身,在$this中有個指標,誰呼叫它,

php面向物件重寫(override)

什麼叫重寫? 重寫,其實就是子類重新定義父類繼承給自己的屬性或者方法。 基本特徵 父類已經有的屬性或方法,子類用同樣的名字再定義一次。 為什麼要重寫? 通常,子類的特徵資訊的定義,都應該是比父類更為“詳細”,其表現在兩個方面: 1、父類沒有的,子類可以有;(注意:新增特徵資

php面向物件多型(1)

利用java來引入多型 買一個手電筒(說明書上寫的手電筒只能裝紅玻璃),和幾個不同顏色的玻璃片,目的是裝上不同的玻璃片,顯示不同的顏色 public class PolyTest { public static void main(String[

PHP面向物件深入理解五(內省函式與反射類)

1. 內省(Introspection)函式 Introspection(內省)程式在執行時檢查物件的型別或屬性的能力,他允許物件類由程式設計師操縱。 你將會發現introspection 相當有用當你不知道哪一個類後或者方法在設計時需要被執行. Introspectio

面向物件(非)繫結方法,反射,isinstance與issubclass

isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)檢查是否obj是否是類 cls 的物件 class Foo(object): pass obj = Foo() isinstance(obj, Foo)

Python面向物件方法及反射

靜態方法 通過@staticmethod裝飾器即可把其裝飾的方法變為一個靜態方法, 普通的方法,可以在例項化後直接呼叫, 並且在方法裡可以通過self.呼叫例項變數或類變數, 但靜態方法是不可以訪問例項變數或類變數的, 一個不能訪問例項變數和類變數的方法, 其實

PHP面向物件深入理解二(封裝、繼承、多型、克隆)

 1.封裝  所謂封裝就是隱藏內部實現細節,提供外部訪問方式  將一系列私有的特徵儲存起來 class Person { private $ID; public function setID($id) { $this

全面解析PHP面向物件的三大特徵

PHP面向物件的三大特徵: 繼承,封裝,多型 一.繼承 1、如何實現繼承? 給子類使用extends關鍵字,讓子類繼承父類; class Student extends Person{} 2、實現繼承的注意事項? ① 子類只能繼承父類的非私有屬性。 ②子類繼承父類後,相當於將父類的屬性和方法co

Python學習第一天:面向物件封裝

  封裝是根據職責將屬性和方法 封裝到一個抽象的類中。 下面是我在學習中的練習案例: 1.小明愛跑步 class Person: def __init__(self,name,weight): self.name = name self.weight = w

Python學習第二天:面向物件繼承

  繼承:實現程式碼的重用,相同的程式碼不需要重複的編寫。 1.繼承的語法 ''' 專業術語: Dog類是Animal類的子類,Animal類是Dog類的父類,Dog類從Animal類繼承 Dog類是Animal類的派生類,Animal類是Dog類的基類,Dog類從Animal類派生

Python--day25--面向物件多型

多型(Python天生支援多型) 多型指的是一類事物有多種形態 動物有多種形態:人,狗,豬 1 import abc 2 class Animal(metaclass=abc.ABCMeta): #同一類事物:動物 3 @abc.abstractmethod 4 def t

JS面向物件物件屬性的屬性

ECMAScript的定義中,物件的屬性有兩種,一種是資料屬性,另一種是訪問器屬性 我們知道JS中有基本資料型別和物件,物件中的屬性也無外乎是這些型別,可是作為物件的屬性,這些屬性本身卻也多了一些特殊的屬性,而且屬性種類的不同也會使屬性的屬性有些許的差別。下面就來聊聊物件屬性的兩種類別。