PHP - 如何计算应用程序中的代码行数

时间:2010-12-02 19:00:49

标签: php code-snippets

我需要计算我的应用程序中的代码行数(在PHP中,而不是命令行),并且因为网络上的代码段没有太多帮助,所以我决定在这里问一下。 谢谢你的回复!

修改

实际上,我需要整个代码片段来扫描和计算给定文件夹中的行。我在CakePHP中使用这种方法,所以我很欣赏无缝集成。

7 个答案:

答案 0 :(得分:5)

要在目录上执行此操作,我将使用迭代器。

function countLines($path, $extensions = array('php')) {
    $it = new RecursiveIteratorIterator(
        new RecursiveDirectoryIterator($path)
    );
    $files = array();
    foreach ($it as $file) {
        if ($file->isDir() || $file->isDot()) {
            continue;
        }
        $parts = explode('.', $file->getFilename());
        $extension = end($parts);
        if (in_array($extension, $extensions)) {
            $files[$file->getPathname()] = count(file($file->getPathname()));
        }
    }
    return $files;
}

这将返回一个数组,其中每个文件作为键,行数作为值。然后,如果您只需要总计,只需执行array_sum(countLines($path)); ...

答案 1 :(得分:4)

您可以使用file功能读取文件,然后使用count

$c = count(file('filename.php'));

答案 2 :(得分:3)

使用ircmaxell的代码,我用它做了一个简单的类,它现在对我很有用

<?php
class Line_Counter
{
    private $filepath;
    private $files = array();

    public function __construct($filepath)
    {
        $this->filepath = $filepath;
    }

    public function countLines($extensions = array('php'))
    {
        $it = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($this->filepath));
        foreach ($it as $file)
        {
           // if ($file->isDir() || $file->isDot())
           if ($file->isDir() )
            {
                continue;
            }
            $parts = explode('.', $file->getFilename());
            $extension = end($parts);
            if (in_array($extension, $extensions))
            {
                $files[$file->getPathname()] = count(file($file->getPathname()));
            }
        }
        return $files;
    }

    public function showLines()
    {
        echo '<pre>';
        print_r($this->countLines());
        echo '</pre>';
    }

    public function totalLines()
    {
        return array_sum($this->countLines());
    }

}

// Get all files with line count for each into an array
$loc = new Line_Counter('E:\Server\htdocs\myframework');
$loc->showLines();

echo '<br><br> Total Lines of code: ';
echo $loc->totalLines();

?>

答案 3 :(得分:2)

$fp = "file.php";
$lines = file($fp);
echo count($lines);

答案 4 :(得分:1)

PHP Classes有一个很好的类来计算目录中php文件的行:

http://www.phpclasses.org/package/1091-PHP-Calculates-the-total-lines-of-code-in-a-directory.html

您可以在课程顶部指定要检查的文件类型。

答案 5 :(得分:1)

答案 6 :(得分:0)

有点脏,但你也可以使用system / exec / passthru wc -l *