j**a類反射應用得非常廣泛幾乎是所有框架的最核心部分,php程式設計師似乎從不關心反射。嘗試著用j**a的思想去理解php的反射,跟j**a基本上基本一致。參考了php手冊:
reflecttest.php:
<?php
class reflecttest
public function __construct($userid,$username,$password)
/***
* @return the $userid
*/public function getuserid()
/***
* @return the $username
*/public function getusername()
/***
* @return the $password
*/public function getpassword()
/***
&nbs程式設計客棧p; * @return the $email
*/public function getemail()
/***
* @return the $qq
*/public function getqq()
/***
* @return the $logintimes
*/public function getlogintimes()
/***
* @param field_type $userid
*/public function setuserid($userid)
/***
* @param field_type $username
*/public function setusername($username)
/***
* @param field_type $password
*/public function setpassword($password)
/***
* @param field_type $email
*/public function setemail($email)
/***
* @param field_type $qq
*/public function setqq($qq)
/***
* @param field_type $logintimes
*/&nbs程式設計客棧p; public function setlogintimes($logintimes)
}?>
test.php:
<?php require_once 'reflecttest.php';
$ref = new reflecttest("1", "admin", "admin888");//例項化reflecttest
echo "
"; $field = $class->getproperties();
foreach($field as $f)
echo "
"; foreach($field as $f)
$method = $class->getmethods();//獲取reflecttest所有方法
echo "
"; foreach($method as $m)
echo "
"; foreach($method as $m)
} echo "
"; $qq=$class->getmethod('getqq');//獲取getqq方法
echo "getqq:".$qq->invoke($instance)."
";//獲取成員變數qq的值
echo "jb51.net";
?>
請求http://localhost/php/test/test.php輸出結果:
reflecttest init.
userid:1
username:admin
password:admin888
field:
userid
username
password
qqlogintimes
get fields doccomment:
/** * 使用者id */
/** * 使用者名稱 */
/** * 使用者密碼 */
/** * 使用者郵箱 */
/** * 使用者qq號碼 */
/** * 登陸次數 */
get methods doccomment:
/** * * @return the $userid */
/** * * @return the $username */
/** * * @return the $password */
/** * * @return the $email */
/** * * @return the $qq */
/** * * @return the $logintimes */
/** * * @param field_type $userid */
/** * * @param field_type $username */
/** * * @param field_type $password */
/** * * @param field_type $email */
/** * * @param field_type $qq */
/** * * @param field_type $logintimes */
get methods:
reflecttest=
__construct=
getuserid=123
getusername=root
getpassword=123456
getemail=
getqq=
getlogintimes=
setuserid=
setusername=
setpassword=
setemail=
setqq=
setlogintimes=
invoke (set/get)qq result:
getqq:441637262
jb51.net
本文標題: php中的reflection反射機制測試例子
本文位址:
PHP 反射機制Reflection
php 反射機制reflection 簡介php reflection api是php5才有的新功能,它是用來匯出或提取出關於類 方法 屬性 引數等的詳細資訊,包括注釋。class reflection inte ce reflector class reflectionexception exte...
對Reflection的一點改進
之前實現的那個reflection沒有把光照加進去,使得不是很逼真,與真實的景象有出入。只要我們把光源也想象 為乙個物體,在鏡子中也會有映象,也會使virtual object產生光照效果。這裡我採用的是聚光燈,對其的屬性設定如下 glfloat lightamb ambient light glf...
php中mysql函式 PHP中的MySQL函式
本篇主要介紹採用php語言如何連線mysql資料庫。首先需要檢測服務mysql是否開啟成功。檢視phpinfo 函式 使用php運算元據庫的步驟 一 連線資料庫伺服器 二 選擇資料庫 mysql select db 資料庫名 三 設定編碼格式 mysql set charset utf 8 四 資料...