通用方法是在项目中获取所有完全限定的类名(具有完整命名空间的类),然后通过所需的命名空间进行过滤。

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 – 获取特定命名空间内的所有类名相关推荐

  1. java 反射 获取 实例_java通过类反射获取某个类的所有信息--代码实例

    package huang.de.wei; import java.lang.annotation.Annotation; import java.lang.reflect.Constructor; ...

  2. 获取字段 命名空间和类_系统架构之命名规范

    数据库设计规范 表设计规范 表名全部小写,单词间通过'_'间隔 主键命名为'id',类型为Long,长度为20位,`非自增` 2. 外键及索引命名规范 唯一索引:ux_表名_索引字段.如:ux_res ...

  3. 获取.fla所有导出类名称列表的方法

    获取.fla所有导出类名称列表的方法 获取.fla所有导出类名称列表的方法 方法是取巧的方法,生成.swc文 件,然后用zip解压,里面有个libray.xml,里面script节点描述了导出类的名称 ...

  4. java读取ES配置生成ES管理类,获取ES连接

    java读取ES配置生成ES管理类,获取ES连接 1.Elasticsearch是基于Lucene开发的一个分布式全文检索框架,向Elasticsearch中存储和从Elasticsearch中查询, ...

  5. String字符串类的获取功能

    StringDemo.java /** String类的获取功能:* int length():获取字符串的长度,其实也就是字符个数* char charAt(int index):获取指定索引处的字 ...

  6. jQuery - 获取并设置 CSS 类、尺寸

    jQuery - 获取并设置 CSS 类 通过 jQuery,可以很容易地对 CSS 元素进行操作. jQuery 拥有若干进行 CSS 操作的方法: addClass() - 向被选元素添加一个或多 ...

  7. python路径找类并获取静态字段

    Python通过路径找类并获取其中大写的静态字段 settings.py class Foo:DEBUG = TrueTEST = True xx.py 1 import importlib 2 3 ...

  8. qt获取开发板ip地址_qt获取网络ip地址的类

    最近在学习qt网络编程,基于tcp和udp协议. 看了一些别人的程序和qt4自带的例子,困扰我最大的问题就是获取ip的类,总结起来还挺多的. 主要介绍常用的QtNetwork Module中的QHos ...

  9. ITK:获取或设置ITK类的成员变量

    ITK:获取或设置ITK类的成员变量 内容提要 C++实现代码 内容提要 获取或设置ITK类的成员变量. C++实现代码 #include "itkImage.h" #includ ...

最新文章

  1. cocos2dx 3.x(动态改变精灵的背景图片)
  2. 4.3.4 网络地址转换NAT
  3. CRM Mock framework debug
  4. 2.平凡之路-初识MyBatis
  5. JS之数组删除/添加项目方法splice
  6. H265编码等级以及图像的基础知识
  7. c语言编程安全队列,C语言编程队列的实现
  8. linux php mysqldump,Linux Shell脚本之利用mysqldump备份MySQL数据库(详细注解)
  9. 阿里开源 iOS 协程开发框架 coobjc源码分析
  10. 性能飙升160%!阿里云发布第七代ECS、云原生数据库PolarDB-X等重磅新品 | 凌云时刻...
  11. 百度文库 复制文本 下载文档
  12. fc安卓模拟器_RA替代计划(上)—3DS的全能模拟器太难用?推荐几个替代品给你...
  13. cf两边黑屏怎么解决win10_红警49期:win10玩红警2黑屏但有声音怎么办
  14. GBASE 8s UDR内存管理_02_mi_dalloc
  15. Android NFC 门票系统手机端程序简介
  16. 有道智选-网易效果推广
  17. Week10-树形数据结构与应用
  18. 涉嫌一级强奸重罪之后,危险的刘强东和京东
  19. 惠普找不到远程服务器,惠普笔记本搜不到wifi怎么办
  20. 微信小程序自动连接蓝牙电子秤

热门文章

  1. Oralce梳理---爱了嘛
  2. 在腾讯工作是怎么样的体验,女生学移动应用开发就业方向
  3. Unity修改材质属性(包含自建Shader)
  4. 计算机音乐数字乐谱梦中的婚礼,梦中的婚礼右手数字简谱
  5. [论文解读]CNN 卷积的魅力+特征图+感受野+共享权重和偏置
  6. 萌新初学python
  7. python人脸识别代码百度ai_强大的AI!Python几行代码,就能预测未来孩子的长相?...
  8. html访问剪切板,如何根据指定的剪切板获取html?
  9. 如何修改服务器的redis密码设置,redis中密码设置
  10. Mysql详细学习指南(超详细)