Last 5.3 release ever available: PHP 5.3.29 - 5.3 now EOL

ReflectionClass::getDocComment

(PHP 5 >= 5.1.0)

ReflectionClass::getDocCommentRé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
*/"

Voir aussi

add a note add a note

User Contributed Notes 3 notes

up
7
joe dot scylla at gmail dot com
4 years ago
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.
up
5
uramihsayibok, gmail, com
3 years ago
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.
up
1
sun
1 month ago
Note that \ReflectionClass::getDocComment() ignores all other PHP code and all white-space between the last encountered T_DOC_COMMENT and the class/element definition.

The only exceptions appear to be T_NAMESPACE declarations and T_FUNCTION definitions.

<?php
/**
* Before namespace.
*/
namespace Foo;

/**
* After namespace.
   */ 

// ^^ contains excessive leading + trailing white-space.
use Bar\Baz;
const
FOO = 'BAR';
$ns = 'bar';
# function foo() {}
$a = 2 + 1;
#/** what? */
// ^^ A single-line T_DOC_COMMENT is invisible when commented out.
count(array());

class
Foo {
}

$reflector = new \ReflectionClass('Foo\Foo');
var_dump($reflector->getDocComment());
?>
yields, despite all the garbage in between:

string(28) "/**
* After namespace.
   */"

To sum up:

1. If there are multiple doc comments, the last encountered applies.

2. Removing the "After namespace." docblock yields FALSE.
   (The namespace delimits the scope.)

3. Uncommenting the function definition yields FALSE.
   (The doc comment applies to the function instead.)

4. Despite being an own language construct, the "const" constant declaration does not delimit the scope.

5. Any leading and trailing white-space before and after the T_DOC_COMMENT ("/**...*/") is ignored, but the entire string content within (including all white-space) is consumed literally/verbatim.

[PHP 5.4.29]
To Top