【问题标题】:PHP Class Function List in Comments注释中的 PHP 类函数列表
【发布时间】:2010-12-23 21:04:07
【问题描述】:

每当我用 PHP 编写一个类时,我喜欢在类的顶部放置一个公共函数列表,如下所示:

// add_project($apikey, $post, $email)
// create_user($apikey, $email, $firstname, $lastname, $rolename, $pid)     
// user_join_project($apikey, $email, $pid)

我想知道是否有任何工具可以自动化这个过程。或许我可以加载类文件,它可以生成函数名称、变量等的列表?

谢谢!

【问题讨论】:

  • 您为什么要这样做?如果您只需要已定义成员的列表,为什么不使用直接向您提供信息的 IDE?
  • 我用Coda,没那个能力,
  • phpDesigner(和许多其他人)具有这种能力。
  • 有意思,我得研究一下,phpDesigner和PHP Storm好像都是试用版,有免费的好用的吗?

标签: php class function


【解决方案1】:

试试phpDocumentor。您对 cme​​ts 使用 DocBlock 语法(类似于 Javadoc 和其他语言),然后通过 phpDocumentor 解析器传递您的 PHP 源文件,它会为您生成 API 文档。

一个粗略的例子:

/**
 * Adds a project.
 * 
 * @param string $apikey The API key.
 * @param object $post The post.
 * @param string $email A supplied email address.
 * @return void
 */
function add_project($apikey, $post, $email) {
    ...
}

【讨论】:

    【解决方案2】:

    这种方法的价值不大。

    首先,如果您还没有这样做,您应该使用appropriate visibility(公共/受保护/私有)标记您的每个方法(实际上是成员变量)。然后,您可以使用phpDoc 等解决方案,除了为每个方法/类等提供总体用途之外,还可以正确记录每个方法参数。

    然后您可以自动为您的项目生成 HTML 格式的文档(以及其他格式)。

    【讨论】:

      【解决方案3】:

      为此有多种工具。它们被称为 PHP 文档。我使用一个名为 PHPStorm 的 IDE,它集成了一个文档。

      Here is some more information on PHPDoc.

      【讨论】:

        【解决方案4】:

        这可以通过Parsekit 轻松完成。

        使用这个(“tmp.php”)作为样本数据:

        <?php
        class Fruit
        {
            public function apple($cored) {}
            public function orange($peeled) {}
            public function grape($colour, $seedless) {}
        }
        

        这是一个转储类函数的简单 Parsekit 示例:

        <?php
        $parsed = parsekit_compile_file($argv[1]);
        foreach ($parsed['class_table'] as $class => $classdat) {
            foreach ($classdat['function_table'] as $func => $funcdat) {
                echo "{$class}::{$func}(";
                $first = true;
                foreach ($funcdat['arg_info'] as $arg => $argdat) {
                    if (!$first) {
                        echo ', ';
                    }
                    echo "\${$argdat['name']}";
                    $first = false;
                }
                echo ")\n";
            }
        }
        

        ...这里正在使用:

        $ php parse.php tmp.php
        Fruit::grape($colour, $seedless)
        Fruit::orange($peeled)
        Fruit::apple($cored)
        

        【讨论】:

          猜你喜欢
          • 2010-11-21
          • 1970-01-01
          • 1970-01-01
          • 2023-03-09
          • 1970-01-01
          • 1970-01-01
          • 2015-11-19
          • 2014-04-27
          • 2016-04-21
          相关资源
          最近更新 更多