【问题标题】:How to Parse Methods and Functions to Log the Code如何解析方法和函数以记录代码
【发布时间】:2014-07-16 06:43:45
【问题描述】:

是否有一种简单的方法可以从 PHP 文件中解析函数及其代码,以便您可以将每个函数的内容分别记录在数据库中?

我想将每个单独的函数和函数的 cmets 记录为单独的数据库条目。

我开始从头开始编写自己的脚本来解析 PHP 文件,但看起来这确实应该是其他人以前已经做过的事情。所以在重新发明轮子之前,我想问问你们中是否有人知道另一种方法?

我发现 get_defined_functions() 提供了当前加载的函数名称。但我也在寻找函数的参数、内容及其 cmets。

【问题讨论】:

  • 你的意思是像Nikic's Parser这样的东西吗?虽然我不确定你为什么要在数据库中记录所有这些细节......当然标准是使用 PHPDocumentor
  • 嗨,马克,感谢您的回复!我不是要记录它,我只是打算根据代码更改的时间进行一些报告,以用于 QA 类型的目的。例如,知道文件最近被编辑不如知道文件中的特定函数被编辑有用。那种报道。我只是希望找到一种方法来记录每次更改时的确切功能代码。谢谢!
  • 肯定是 github、mercurial 或 svn 等版本控制系统可以提供的信息类型
  • 您是否需要知道在给定时间进行了哪些更改或简单的更改?使用 sha256 或类似方法对函数进行实际散列可能很有用,然后您可以轻松比较散列以查看它是否发生了变化。我实际上正在构建一个基于散列文件内容的缓存系统。我还建议查看 php 中的反射类。

标签: php parsing


【解决方案1】:

您正在寻找token_get_all(),它接受一个 PHP 源文件并将其解析为其组件(关键字、cmets、空格、字符串等)。

如果您尝试分析性能,例如记录慢速调用,您将需要像 xDebug 这样的调试器。

【讨论】:

  • 您好,埃德,感谢您的回复!我主要打算将它用于报告目的,当代码更改时等。我测试了 token_get_all() 函数,但它似乎所做的只是将代码的每一位分解成单独的部分。我很难理解这对我有什么帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多