Получить все комментарии из файла

Получить все комментарии из php-файла. Используется token_get_all.

get-comments.php
<?php
 
class stdinComments {
 
  private $txt;
  public function run() {
    $this->getText();
    $this->getComments();
    $this->echoComments();
  }
 
  private function getText() {
    $handle = fopen('php://stdin', 'r');
 
    while (!feof($handle)) {
      $line = fgets($handle);
      if (empty($line)) continue;
      $this->txt .= $line;
    }
 
    fclose($handle);
 
  }
 
  private static $comment = array(
    T_COMMENT,      // All comments since PHP5
    // T_ML_COMMENT,   // Multiline comments PHP4 only
    T_DOC_COMMENT   // PHPDoc comments
  );
 
  private $comments = array();
  private function getComments() {
    $tokens = token_get_all($this->txt);
 
    foreach($tokens as $token) {
      if(!in_array($token[0], self::$comment)) continue;
      $this->comments[] = $token[1];
    }
  }
 
  private function echoComments() {
    foreach($this->comments as $comment) {
      echo $comment.PHP_EOL;
    }
  }
 
}
 
$app = new stdinComments();
$app->run();

Использование:

cat index.php | php ./get-comments.php

Получить из всех PHP-файлов:

find -name '*.php' -print0 | xargs -0 cat | php ./get-comments.php >> all-comments.txt