Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-如何计算应用程序中的代码行数_Php_Code Snippets - Fatal编程技术网

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

PHP-如何计算应用程序中的代码行数,php,code-snippets,Php,Code Snippets,我需要计算我的应用程序中的代码行数(用PHP,而不是命令行),由于web上的代码片段没有太大帮助,我决定在这里询问。 谢谢你的回复 编辑 实际上,我需要整个片段来扫描和计算给定文件夹中的行数。我在CakePHP中使用此方法,因此我希望无缝集成。您可以使用文件函数读取文件,然后计数: $c = count(file('filename.php')); 您可以使用文件功能读取文件,然后计数: $c = count(file('filename.php')); 有点脏,但您也可以使用system/

我需要计算我的应用程序中的代码行数(用PHP,而不是命令行),由于web上的代码片段没有太大帮助,我决定在这里询问。 谢谢你的回复

编辑


实际上,我需要整个片段来扫描和计算给定文件夹中的行数。我在CakePHP中使用此方法,因此我希望无缝集成。

您可以使用
文件
函数读取文件,然后
计数

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

您可以使用
文件
功能读取文件,然后
计数

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

有点脏,但您也可以使用system/exec/passthru
wc-l*
有点脏,但您也可以使用system/exec/passthru
wc-l*
PHP类有一个很好的类用于计算目录中PHP文件的行数:


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

PHP类有一个很好的类,用于计算目录中PHP文件的行数:

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

可以在类的顶部指定要检查的文件类型

$fp = "file.php"; $lines = file($fp); echo count($lines); $fp=“file.php”; $lines=文件($fp); 回波计数(行); $fp=“file.php”; $lines=文件($fp); 回波计数(行);

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

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))..

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

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))..

使用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();

?>

使用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();

?>



您想要实际的代码行吗?包括/不包括评论?公司/交易所空白?Inc/Exc多行字符串?对于源代码,“行”有许多不同的定义。所有行,无论它们包含代码、注释还是空白。是否要实际的代码行?包括/不包括评论?公司/交易所空白?Inc/Exc多行字符串?对于源代码,“行”有很多不同的定义。所有行,无论是包含代码、注释还是空白。我编辑了这个问题,因为它不太清楚:)我编辑了这个问题,因为它不太清楚:)我提到我需要一个PHP代码段,而不是命令行输入。很抱歉我提到我需要一个PHP代码段,而不是命令行输入。很抱歉感谢您的建议,但由于我正在将其集成到CakePHP中,因此如果我不导入单独的类来实现这一点,则更为合适:)您可以随时查看代码并实现所需的部分,它非常小:-)感谢您的建议,但由于我正在将其集成到CakePHP中,如果我不导入一个单独的类来实现这一点,那就更合适了:)您可以随时查看代码并实现所需的部分,它非常小:-)我需要将它与CakePHP更容易地集成:)然后你可以查看代码并集成它。我需要将它与CakePHP更容易地集成:)然后你可以查看代码并集成它。我编辑了这个问题,因为它不太清楚:)我编辑了这个问题,因为它不太清楚:)谢谢你的回答。我不太了解RecursiveIteratorIterator类的功能,也不太了解它是否可以替换为可以轻松与CakePHP集成的类(正如我在问题中提到的,我希望在我的应用程序中不包含任何其他“外部”类)。“外部”类是PHP本身的一部分。至于与Cake的集成,最简单的方法莫过于复制粘贴该函数。@linkyndy:
recursiveIteratoryIterator
RecursiveDirectoryIterator
都是因为
PHP5.0.0
。没有必要包括任何外国课程。只要复制并通过上面的代码,它将适用于任何框架(因为它只是原始PHP)…哦,我不知道:)感谢您的解决方案!我得到以下错误:
致命错误:调用
中未定义的方法SplFileInfo::isDot()-为什么???感谢您的回答。我不太了解RecursiveIteratorIterator类的功能,也不太了解它是否可以替换为可以轻松与CakePHP集成的类(正如我在问题中提到的,我希望在我的应用程序中不包含任何其他“外部”类)。“外部”类是PHP本身的一部分。至于与Cake的集成,最简单的方法莫过于复制粘贴该函数。@linkyndy:
recursiveIteratoryIterator
RecursiveDirectoryIterator
都是因为
PHP5.0.0
。没有必要包括任何外国课程。只要复制并通过上面的代码,它将适用于任何框架(因为它只是原始PHP)…哦,我不知道:)感谢您的解决方案!我得到以下错误:
致命错误:调用
中未定义的方法SplFileInfo::isDot()-为什么???同意,感谢分享!同意,谢谢分享!