php获取当前命名空间所有类,PHP – 获取特定命名空间内的所有类名
通用方法是在项目中获取所有完全限定的类名(具有完整命名空间的类),然后通过所需的命名空间进行过滤。
PHP提供了一些本机函数来获取这些类(get_declared_classes等),但是它们将无法找到尚未加载的类(include / require),因此它将无法按预期自动加载器(如Composer for例)。
这是一个主要问题,因为自动装载机的使用是非常普遍的。
所以你最后的手段是自己找到所有的PHP文件,并解析它们来提取它们的命名空间和类:
$path = __DIR__;
$fqcns = array();
$allFiles = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path));
$phpFiles = new RegexIterator($allFiles, '/\.php$/');
foreach ($phpFiles as $phpFile) {
$content = file_get_contents($phpFile->getRealPath());
$tokens = token_get_all($content);
$namespace = '';
for ($index = 0; isset($tokens[$index]); $index++) {
if (!isset($tokens[$index][0])) {
continue;
}
if (T_NAMESPACE === $tokens[$index][0]) {
$index += 2; // Skip namespace keyword and whitespace
while (isset($tokens[$index]) && is_array($tokens[$index])) {
$namespace .= $tokens[$index++][1];
}
}
if (T_CLASS === $tokens[$index][0]) {
$index += 2; // Skip class keyword and whitespace
$fqcns[] = $namespace.'\\'.$tokens[$index][1];
}
}
}
如果您遵循PSR 0或PSR 4标准(您的目录树反映您的命名空间),则不必过滤任何内容:只需给出与所需命名空间相对应的路径。
php获取当前命名空间所有类,PHP – 获取特定命名空间内的所有类名相关推荐
- java 反射 获取 实例_java通过类反射获取某个类的所有信息--代码实例
package huang.de.wei; import java.lang.annotation.Annotation; import java.lang.reflect.Constructor; ...
- 获取字段 命名空间和类_系统架构之命名规范
数据库设计规范 表设计规范 表名全部小写,单词间通过'_'间隔 主键命名为'id',类型为Long,长度为20位,`非自增` 2. 外键及索引命名规范 唯一索引:ux_表名_索引字段.如:ux_res ...
- 获取.fla所有导出类名称列表的方法
获取.fla所有导出类名称列表的方法 获取.fla所有导出类名称列表的方法 方法是取巧的方法,生成.swc文 件,然后用zip解压,里面有个libray.xml,里面script节点描述了导出类的名称 ...
- java读取ES配置生成ES管理类,获取ES连接
java读取ES配置生成ES管理类,获取ES连接 1.Elasticsearch是基于Lucene开发的一个分布式全文检索框架,向Elasticsearch中存储和从Elasticsearch中查询, ...
- String字符串类的获取功能
StringDemo.java /** String类的获取功能:* int length():获取字符串的长度,其实也就是字符个数* char charAt(int index):获取指定索引处的字 ...
- jQuery - 获取并设置 CSS 类、尺寸
jQuery - 获取并设置 CSS 类 通过 jQuery,可以很容易地对 CSS 元素进行操作. jQuery 拥有若干进行 CSS 操作的方法: addClass() - 向被选元素添加一个或多 ...
- python路径找类并获取静态字段
Python通过路径找类并获取其中大写的静态字段 settings.py class Foo:DEBUG = TrueTEST = True xx.py 1 import importlib 2 3 ...
- qt获取开发板ip地址_qt获取网络ip地址的类
最近在学习qt网络编程,基于tcp和udp协议. 看了一些别人的程序和qt4自带的例子,困扰我最大的问题就是获取ip的类,总结起来还挺多的. 主要介绍常用的QtNetwork Module中的QHos ...
- ITK:获取或设置ITK类的成员变量
ITK:获取或设置ITK类的成员变量 内容提要 C++实现代码 内容提要 获取或设置ITK类的成员变量. C++实现代码 #include "itkImage.h" #includ ...
最新文章
- cocos2dx 3.x(动态改变精灵的背景图片)
- 4.3.4 网络地址转换NAT
- CRM Mock framework debug
- 2.平凡之路-初识MyBatis
- JS之数组删除/添加项目方法splice
- H265编码等级以及图像的基础知识
- c语言编程安全队列,C语言编程队列的实现
- linux php mysqldump,Linux Shell脚本之利用mysqldump备份MySQL数据库(详细注解)
- 阿里开源 iOS 协程开发框架 coobjc源码分析
- 性能飙升160%!阿里云发布第七代ECS、云原生数据库PolarDB-X等重磅新品 | 凌云时刻...
- 百度文库 复制文本 下载文档
- fc安卓模拟器_RA替代计划(上)—3DS的全能模拟器太难用?推荐几个替代品给你...
- cf两边黑屏怎么解决win10_红警49期:win10玩红警2黑屏但有声音怎么办
- GBASE 8s UDR内存管理_02_mi_dalloc
- Android NFC 门票系统手机端程序简介
- 有道智选-网易效果推广
- Week10-树形数据结构与应用
- 涉嫌一级强奸重罪之后,危险的刘强东和京东
- 惠普找不到远程服务器,惠普笔记本搜不到wifi怎么办
- 微信小程序自动连接蓝牙电子秤
热门文章
- Oralce梳理---爱了嘛
- 在腾讯工作是怎么样的体验,女生学移动应用开发就业方向
- Unity修改材质属性(包含自建Shader)
- 计算机音乐数字乐谱梦中的婚礼,梦中的婚礼右手数字简谱
- [论文解读]CNN 卷积的魅力+特征图+感受野+共享权重和偏置
- 萌新初学python
- python人脸识别代码百度ai_强大的AI!Python几行代码,就能预测未来孩子的长相?...
- html访问剪切板,如何根据指定的剪切板获取html?
- 如何修改服务器的redis密码设置,redis中密码设置
- Mysql详细学习指南(超详细)