我需要计算我的应用程序中的代码行数(在PHP中,而不是命令行),并且因为网络上的代码段没有太多帮助,所以我决定在这里问一下。 谢谢你的回复!
修改
实际上,我需要整个代码片段来扫描和计算给定文件夹中的行。我在CakePHP中使用这种方法,所以我很欣赏无缝集成。
答案 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 *