原理:透過反射類,可以知道一切類資訊,從而實現更加健壯的程式碼
作用:
- 寫底層框架
- 擴充套件類功能
- 管理大量未知類
<?php
namespace Extend;
use ReflectionClass;
use Exception;
class User{
const ROLE = 'Students';
public $username = '';
private $password = '';
public function __construct($username, $password)
{
$this->username = $username;
$this->password = $password;
}
public function getUsername()
{
return $this->username;
}
public function setUsername($username)
{
$this->username = $username;
}
private function getPassword()
{
return $this->password;
}
private function setPassowrd($password)
{
$this->password = $password;
}
}
$class = new ReflectionClass('Extend\User'); // 將類名User作為引數,即可建立User類的反射類
echo '將類名User作為引數,即可建立User類的反射類';echo "<br/>";
echo "<pre>";var_dump($class);echo "</pre>";echo "<br/>";
$properties = $class->getProperties(); // 獲取User類的所有屬性,返回ReflectionProperty的陣列
echo '獲取User類的所有屬性,返回ReflectionProperty的陣列';echo "<br/>";
echo "<pre>";var_dump($properties);echo "</pre>";echo "<br/>";
$property = $class->getProperty('password'); // 獲取User類的password屬性ReflectionProperty
echo '獲取User類的password屬性ReflectionProperty';echo "<br/>";
echo "<pre>";var_dump($property);echo "</pre>";echo "<br/>";
$methods = $class->getMethods(); // 獲取User類的所有方法,返回ReflectionMethod陣列
echo '獲取User類的所有方法,返回ReflectionMethod陣列';echo "<br/>";
echo "<pre>";var_dump($methods);echo "</pre>";echo "<br/>";
$method = $class->getMethod('getUsername'); // 獲取User類的getUsername方法的ReflectionMethod
echo '獲取User類的getUsername方法的ReflectionMethod';echo "<br/>";
echo "<pre>";var_dump($method);echo "</pre>";echo "<br/>";
$constants = $class->getConstants(); // 獲取所有常量,返回常量定義陣列
echo '獲取所有常量,返回常量定義陣列';echo "<br/>";
echo "<pre>";var_dump($constants);echo "</pre>";echo "<br/>";
$constant = $class->getConstant('ROLE'); // 獲取ROLE常量
echo '獲取ROLE常量';echo "<br/>";
echo "<pre>";var_dump($constant);echo "</pre>";echo "<br/>";
$namespace = $class->getNamespaceName(); // 獲取類的名稱空間
echo '獲取類的名稱空間';echo "<br/>";
echo "<pre>";var_dump($namespace);echo "</pre>";echo "<br/>";
$comment_class = $class->getDocComment(); // 獲取User類的註釋文件,即定義在類之前的註釋
echo '獲取User類的註釋文件,即定義在類之前的註釋';echo "<br/>";
echo "<pre>";var_dump($comment_class);echo "</pre>";echo "<br/>";
$comment_method = $class->getMethod('getUsername')->getDocComment(); // 獲取User類中getUsername方法的註釋文件
echo '獲取User類中getUsername方法的註釋文件';echo "<br/>";
echo "<pre>";var_dump($comment_class);echo "</pre>";echo "<br/>";
複製程式碼,即可執行。 謝謝你的瀏覽,如有錯誤,歡迎指正哈!!!
本作品採用《CC 協議》,轉載必須註明作者和本文連結