私のアプリケーション内のコード行数をカウントする必要があります(PHPではコマンドラインではありません)。また、Web上のスニペットがあまり役に立たなかったので、私はここで尋ねることに決めました。 お返事ありがとう!PHP - アプリケーション内のコード行をカウントする方法
EDIT
実は、私が指定したフォルダ内のスキャンのための全体のスニペットとカウントラインが必要になります。私はCakePHPでこのメソッドを使用していますので、シームレスな統合に感謝します。
私のアプリケーション内のコード行数をカウントする必要があります(PHPではコマンドラインではありません)。また、Web上のスニペットがあまり役に立たなかったので、私はここで尋ねることに決めました。 お返事ありがとう!PHP - アプリケーション内のコード行をカウントする方法
EDIT
実は、私が指定したフォルダ内のスキャンのための全体のスニペットとカウントラインが必要になります。私はCakePHPでこのメソッドを使用していますので、シームレスな統合に感謝します。
ディレクトリ上でそれを行うには、私はイテレータを使用すると思います。
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;
}
これは、各ファイルをキーとして、行数を値として配列を返します。あなただけの合計をしたい場合はその後、ちょうどircmaxellのコードを使用してarray_sum(countLines($path));
...
あなたの答えをありがとう。私はRecursiveIteratorIteratorクラスが何をしているのか、それがCakePHPと簡単に統合できるものに置き換えられたのかどうかはわかりませんでした(私の質問で触れたように、私のアプリケーションには他の ' – linkyndy
'foreign'クラスはPHP自体の一部です。 Cakeとの統合に関しては、その機能をコピーして貼り付けるよりもずっと簡単にはなりません。 – salathe
@linkyndy: 'RecursiveIteratorIterator'と' RecursiveDirectoryIterator'は 'PHP 5.0.0'以来[コアPHPクラス](http://us.php.net/manual/en/spl.iterators.php)です。外国のクラスを含める必要はありません。上記のコードをコピーして実行すれば、それはどのフレームワークでも動作します(これは単なるPHPです)... – ircmaxell
あなたは、ファイルを読み込んでcount
するfile
機能を使用することができます。少し汚れ
$c = count(file('filename.php'));
+1試してみました! – systemovich
私は質問が非常にはっきりしていないので編集しました:) – linkyndy
PHPクラスシステム/ EXEC /パススルーを使用することができますが素敵なクラスを持っていますあなたは
http://www.phpclasses.org/package/1091-PHP-Calculates-the-total-lines-of-code-in-a-directory.html
:ディレクトリ内のPHPファイルの行をカウントしますクラスの先頭でチェックしたいファイルタイプを指定することができます。
$fp = "file.php"; $lines = file($fp); echo count($lines);
私はそれが非常にはっきりしていなかったので、質問を編集しました:) – linkyndy
私はそれをCakePHPと簡単に統合する必要があります:) – linkyndy
その後、コードを見て、それを統合することができます。 – KingCrunch
を行う、私はそれは私のために素晴らしい作品、それから単純なクラスを作った今
<?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マルチライン文字列?ソースコードに関しては、 "行"という言葉には多くの異なる定義があります。 –
コード、コメント、または空白を含むすべての行。 – linkyndy