ReflectionClass::getConstants() - php 反射机制
ReflectionClass::getConstants()
(PHP 5, PHP 7)
获取一组常量
说明
publicReflectionClass::getConstants(void): array获取某个类的全部已定义的常量,不管可见性如何定义。
Warning本函数还未编写文档,仅有参数列表。
参数
此函数没有参数。
返回值
常量的数组,常量名是数组的键,常量的值是数组的值。
参见
- ReflectionClass::getConstant() 获取定义过的一个常量
If you want to return the constants defined inside a class then you can also define an internal method as follows:
You can pass $this as class for the ReflectionClass. __CLASS__ won't help if you extend the original class, because it is a magic constant based on the file itself.
I use a functions to do somthing base on the class constant name as below. This example maybe helpful for everybody.
I was trying to determine how to get a var_dump of constants that are within an interface. Thats right, not using any classes but the interface itself. Along my travels I found it quite interesting that the ReflectionClass along with a direct call to the interface will also dump its constants. Perfect!!!! This was using PHP 5.3.1 and my example as below:- 1st File: constants.php ======= Second file: ======= test.php what you would get from the command line:- ?:\???\htdocs\????>php test.php array(2) { ["DEBUG_MODE_ACTIVE"]=> bool(false) ["PHP_VERSION_REQUIREMENT"]=> string(5) "5.1.2" But as you can see this can work quite well to your advantage in many ways so I truely hope this helps someone else with a similar headache in the future to come! Enjoy!
Get the latest constants declared. abstract class AbstractEnum { /** * Возвращает все константы класса || Return all constants * * @return array */ static function getConstants() { $rc = new \ReflectionClass(get_called_class()); return $rc->getConstants(); } /** * Возвращает массив констант определенные в вызываемом классе || Return last constants * * @return array */ static function lastConstants() { $parentConstants = static::getParentConstants(); $allConstants = static::getConstants(); return array_diff($allConstants, $parentConstants); } /** * Возвращает все константы родительских классов || Return parent constants * * @return array */ static function getParentConstants() { $rc = new \ReflectionClass(get_parent_class(static::class)); $consts = $rc->getConstants(); return $consts; } } ====== class Roles extends AbstractEnum { const ROOT = 'root'; const ADMIN = 'admin'; const USER = 'user'; } // Output: All: root, admin, user Last: root, admin, user class NewRoles extends Roles { const CLIENT = 'client'; const MODERATOR = 'moderator'; const SUPERMODERATOR = 'super'.self::USER; } // Output: All: client, moderator, superuser, root, admin, user Last: client, moderator, superuser class AdditionalRoles extends Roles { const VIEWER = 'viewer'; const CHECKER = 'checker'; const ROOT = 'rooter'; } All: viewer, checker, rooter, client, moderator, superuser, admin, user Last: viewer, checker, rooter
鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com
免责声明:我们致力于保护作者版权,注重分享,当前被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!邮箱:344225443@qq.com)
图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!
内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,本着为中国教育事业出一份力,发布内容不收取任何费用也不接任何广告!)