WP_CLI\Dispatcher
CommandFactory::get_doc_comment
Gets the document comment. Caters for PHP directive opcache.save comments being disabled.
Method of the class: CommandFactory{}
No Hooks.
Returns
String|false|null. Doc comment string if any, false if none (same as Reflection*::getDocComment()), null if error.
Usage
$result = CommandFactory::get_doc_comment( $reflection );
- $reflection(ReflectionMethod|ReflectionClass|ReflectionFunction) (required)
- Reflection instance.
CommandFactory::get_doc_comment() CommandFactory::get doc comment code WP-CLI 2.13.0-alpha
private static function get_doc_comment( $reflection ) {
$contents = null;
$doc_comment = $reflection->getDocComment();
if ( false !== $doc_comment || ! ( ini_get( 'opcache.enable_cli' ) && ! ini_get( 'opcache.save_comments' ) ) ) { // phpcs:ignore PHPCompatibility.IniDirectives.NewIniDirectives
// Either have doc comment, or no doc comment and save comments enabled - standard situation.
if ( ! getenv( 'WP_CLI_TEST_GET_DOC_COMMENT' ) ) {
return $doc_comment;
}
}
$filename = $reflection->getFileName();
if ( isset( self::$file_contents[ $filename ] ) ) {
$contents = self::$file_contents[ $filename ];
} elseif ( is_readable( $filename ) ) {
$contents = file_get_contents( $filename );
if ( is_string( $contents ) && '' !== $contents ) {
$contents = explode( "\n", $contents );
self::$file_contents[ $filename ] = $contents;
}
}
if ( ! empty( $contents ) ) {
return self::extract_last_doc_comment( implode( "\n", array_slice( $contents, 0, $reflection->getStartLine() ) ) );
}
WP_CLI::debug( "Could not read contents for filename '{$filename}'.", 'commandfactory' );
return null;
}