在PHP中,您可以使用class_alias
function来定义类别别名。有没有办法获得当前在运行时定义的所有类别名单?所有PHP别名列表
回答
正如hek2mgl所示,这在PHP中不可行。取决于为什么你想这可能有可行的解决方法,但。
我假设你现在正在尝试检测在第三方代码中创建的别名。然后install the Runkit module你可以设置runkit.internal_override
到1
,使本机的功能改进,并做这样的事情在你的项目的根文件:
runkit_function_rename('class_alias', 'class_alias_internal');
function class_alias($original, $alias, $autoload = TRUE)
{
Logsomewhere("Creating alias from $original to $alias!");
class_alias_internal($original, $alias, $autoload);
}
当然这也意味着,你可以建立正是你的列表求。我没有看到该功能的任何运行时生产用途(纠正我,如果我错了),所以你只需要在开发服务器上这样做,只要需要。由于Runkit是一个相当危险的模块,我甚至会在完成后立即在devserver上禁用它。
对于其他情况类似的解决方法可能是可行的,但我需要知道你为什么寻求这些信息。就PHP而言,一个别名是假设不可检测,所以它的工作正常(对于更改)。
可疑的是,它是检测第三方代码中的别名。感谢您的runkit建议! – 2014-09-20 19:51:08
看看PHP的源代码。别名注册后,PHP不知道什么是原始的,什么是别名。像文件系统中的硬链接一样。然而https://github.com/php/php-src/blob/master/Zend/zend_API.c#L2728
,答:你可以查看代码,在它的最新版本,在这里(注意,链接可能在你正在阅读这个时刻已经过时搜索功能zend_register_class_alias_ex
然后。)函数显示具有多个指定引用的类表的条目可以制作(在PHP的核心中,使用C),但看起来目前不可用。
+1我非常感谢你为我挖掘源代码 - 这是我希望自己擅长的事情之一。 – 2014-09-20 19:52:05
我很高兴我可以帮忙.. :) – hek2mgl 2014-09-20 23:24:33
- 1. 搜索PHP阵列的所有级别
- 2. php mysql自动选择别名表中的所有字段?
- 3. Android手机中所有证书的列表别名
- 4. MySQL从两个表中选择所有列别名
- 5. 如何在mySQL中同时'别名'表和所有列?
- 6. 如何识别所有表中存在名称的列?
- 7. 如何获取每个表的所有表名和所有列名和行名?
- 8. 所有可能的类别列表?
- 9. 所有用户名的Postfix别名?
- 10. 重命名所有表中的列 - SQL
- 11. 所有顶级域名列表
- 12. postgres查询列出所有表名
- 13. 列出所有列名
- 14. 命名实体识别与Python/PHP的预设名称列表
- 15. 如何使用表别名返回具有重复列的所有数据
- 16. MYSQL联盟所有有别名
- 17. 获取所有PHP会话列表session_id
- 18. PHP MYSQL分页列表所有字段
- 19. 制作列表的元素列表里没有别名
- 20. 表[表名]没有列名为[列名]
- 21. PL/SQL表和列别名
- 22. 寻找别名列表
- 23. 从ebay类别列表中导入所有类别
- 24. 获取给定级别的所有级别儿童的列表
- 25. OPENROWSET没有列别名?
- 26. 游标SELECT列表中所需的别名,以避免重复的列名称
- 27. 查询MySQL表格一次以获取所有类别的所有列表
- 28. SQLite和PHP列表类别
- 29. php获取所有子目录和所有文件的列表
- 30. 选择类别列表是否具有父类别名称?
不,但如果你是唯一一个创建别名,你可以做一些包装单体类来处理这个亚。 – Smuuf 2014-09-20 08:16:30