According to what I can find in the PHP (5.3.2) source code, getDocComment will return the doc comment as the parser found it.
The doc comment (T_DOC_COMMENT) must begin with a /** - that's two asterisks, not one. The comment continues until the first */. A normal multi-line comment /*...*/ (T_COMMENT) does not count as a doc comment.
The doc comment itself includes those five characters, so <?php substr($doccomment, 3, -2) ?> will get you what's inside. A call to trim() after is recommended.
ReflectionClass::getDocComment
(PHP 5 >= 5.1.0)
ReflectionClass::getDocComment — Récupère les commentaires
Description
public string ReflectionClass::getDocComment
( void
)
Récupère les commentaires depuis une classe.
Avertissement
Cette fonction n'est pas documentée et seule la liste des arguments est disponible.
Liste de paramètres
Cette fonction ne contient aucun paramètre.
Valeurs de retour
Le commentaire, si il existe, FALSE sinon.
Exemples
Exemple #1 Exemple avec ReflectionClass::getDocComment()
<?php
/**
* Une classe de test
*
* @param foo bar
* @return baz
*/
class TestClass { }
$rc = new ReflectionClass('TestClass');
var_dump($rc->getDocComment())
?>
L'exemple ci-dessus va afficher :
string(55) "/** * Une classe de test * * @param foo bar * @return baz */"
uramihsayibok, gmail, com
15-Sep-2010 03:50
leosouza at hotmail dot com
26-Feb-2010 03:10
The code getDocComment() is not as effective as it seems, a method with a well-crafted regular expression, can solve some problems that this method does not address, for example: Some comments that begin with "/ *" will not be returned in a file too extensive.
The method below shows how you can use a regular expression to get better results.
This code snippet captures the comments in a file. "Php" and replaces it with an empty string, ie "cut" the comments of a class:
<?php
public function getComments() {
$expr = "/((?:\/\*(?:[^*]|(?:\*+[^*\/]))*\*+\/)|(?:\/\/.*))/";
$filename = $this->fileDir; //file directory
$file = fopen($filename, "r");
$length = filesize($filename);
$comments = fread($file, $length);
preg_match_all($expr, $comments, $matchs); //capture the comments
foreach($matchs[0] as $id => $variable){
$comments = str_replace($variable,'',$comments); // replace the scores of empty
}
fclose($file);
$file = fopen($filename, "w");
$file = fwrite($file, $comments);
}
?>
joe dot scylla at gmail dot com
14-Oct-2009 02:23
If you're using a bytecode cache like eAccelerator this method will return FALSE even if there is a properly formatted Docblock. It looks like the information required by this method gets stripped out by the bytecode cache.
