有没有办法检查文件中是否存在类,而不包括/需要该类?检查文件中是否存在类而不要求/包括
喜欢的东西:class_in_file($file);
正如我已经提到的,我知道这可以要求/包括类,然后查找class_exists($class);
来完成,但其他方法吗?
有没有办法检查文件中是否存在类,而不包括/需要该类?检查文件中是否存在类而不要求/包括
喜欢的东西:class_in_file($file);
正如我已经提到的,我知道这可以要求/包括类,然后查找class_exists($class);
来完成,但其他方法吗?
$tokens = token_get_all(file_get_contents('foo.php'));
然后通过标记查看是否可以发现某个T_CLASS
条目。
http://www.php.net/manual/en/function.token-get-all.php
http://www.php.net/manual/en/tokens.php
PHP只知道,如果它已经加载(解析)他们(假定他们不是内置)定义的文件中有阶级存在。如果你有一个明确定义的结构(也许你正在使用自动加载),你可以通过检查定义它的文件是否存在来检查一个类是否存在。例如if (file_exists('<path to app>/lib/Myapp/Util/Http.php'))
可用于检查您的应用程序目录中是否存在Myapp_Util_Http
类。尽管如此,不能保证类确实存在于该文件中。为此,您必须包含/需要它,阅读并解析它,或使用自动加载并尝试使用它。
php文件是一个文本文件,你可以打开它,以便找到一个 类声明解析它。
它不是一个简单的过程,但一个好的解析器应该使任务变得简单。
你必须重拳出击注释行,包含类声明的字符串可以触发误报,here文档往往使事情更加复杂。 Evals也应该考虑在内。
如果你有机会到PHP命令行解释器,那么你可以看看这条意见和空格为你做侑以良好的工作一半你-w开关。
简短的答案是否定的。只有解决方法。例如,你可以分析自己的文件(可能使用token_get_all
),或者在顶部像
<?php
/** #has_class(CLASSNAME)
*/
评论莫名其妙地标记文件并读取头几行寻找这与preg_match
。
哦,不....因为它剧照需要文件,以检查是否在该文件中存在的类....不然怎么回事就它知道吗?如果你有一个class_in_file,它仍然需要读取文件。 – Flukey
如果你解释为什么你认为你需要这个,它会帮助很多人。 – CodeCaster
@Jamie我认为他的意思是'include'和'require',它们不同于只读文件。 – deceze