php手记-根据类名获得类的定义(get_class_methods、get_class_vars...)
2015-11-25 11:09
609 查看
背景
最近在看laravel框架的源码,不知道Route是怎么定义的,找了很久都没找到,遂从网上找有什么方法可以根据类名获得类的命名空间什么的,最后找到了用get_class_methods获得Route类定义的相关方法名称,然后根据这些方法名称组合找到类的定义(Illuminate\Support\Facades\Facade),下面是在寻找方法过程中学到的知识。类相关魔术常量
<?php namespace sakurallj; trait traitTest { function getReturnType() { echo "__TRAIT__:".__TRAIT__.PHP_EOL; } } class TestController { use \sakurallj\traitTest; public function test() { echo "__LINE__:".__LINE__.PHP_EOL ."__FILE__:".__FILE__.PHP_EOL ."__FUNCTION__:".__FUNCTION__.PHP_EOL ."__CLASS__:".__CLASS__.PHP_EOL ."__METHOD__:".__METHOD__.PHP_EOL ."__NAMESPACE__:".__NAMESPACE__.PHP_EOL; } } $t = new \sakurallj\TestController(); $t->test(); $t->getReturnType(); //output: __LINE__:16 __FILE__:/home/sakurallj/personDoc/phpWorkspace/index.php __FUNCTION__:test __CLASS__:sakurallj\TestController __METHOD__:sakurallj\TestController::test __NAMESPACE__:sakurallj __TRAIT__:sakurallj\traitTest ?>
获取类名、方法名、变量名的方法
get_class(object); //取得对象的类名get_class_methods(class name); //取得class name 类的所有的方法名,并且组成一个数组
get_class_vars(class name); //取得class name 类的所有的变亮名,并组成一个数组
class Test { private $a; protected $b; public $c; const d = 0; private function foo() { } protected function foo1() { } public function name() { echo "My name is " , get_class($this) , "\n"; } } $bar = new Test(); // external call echo "Its name is " , get_class($bar) , "\n"; // internal call $bar->name(); var_dump(get_class_methods("Test"));//只能获得public的方法 var_dump(get_class_vars("Test"));//只能获得public的变量,不能获得const定义的变量 //output: Its name is Test My name is Test array(2) { [0] => string(4) "name" [1] => string(5) "name1" } array(1) { 'c' => NULL }
参考
http://php.net/manual/zh/language.constants.predefined.php
http://www.php.net/manual/zh/function.get-class.php
相关文章推荐
- 一个关于if else容易迷惑的问题
- PHP5.2.*防止Hash冲突拒绝服务攻击的Patch
- 深入理解PHP之匿名函数
- JSP/PHP基于Ajax的分页功能实现
- 关于PHP通过PDO用中文条件查询MySQL的问题。
- 什么是设计模式
- PHP数据库长连接mysql_pconnect的细节
- Php Installing An Expansion
- PHP+Apache在Windows 9x下的安装和配置
- IIS 6 的 PHP 最佳配置方法
- 安装Apache和PHP的一些补充
- Linux Apache+MySQL+PHP
- 建立Apache+PHP+MySQL数据库驱动的动态网站
- PHP 5.3.0 安装分析心得
- apache 环境下 php 的配置注意事项
- ASP.NET、ASP、PHP、JSP之间有什么区别?
- PHP VBS JS 函数 对照表
- C语言实现的统计php代码行数功能源码(支持文件夹、多目录)
- php xml 入门学习资料