广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >php获取方法的注释
  • 953
分享到

php获取方法的注释

2023-06-08 01:06:15 953人浏览 安东尼
摘要

小编给大家分享一下PHP获取方法的注释,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!php获取方法的注释:首先打开相应的PHP文件;然后通过php中的反射机制,获

小编给大家分享一下PHP获取方法的注释,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

php获取方法的注释:首先打开相应的PHP文件;然后通过php中的反射机制,获取该类的文档注释;最后通过获取其所有的方法,获取方法的注释即可。

php反射获取类和方法中的注释

通过php中的反射机制,获取该类的文档注释,再通过获取其所有的方法,获取方法的注释

所用到的主要类及其方法

ReflectionClassReflectionClass::getDocCommentReflectionClass::getMethods $method->getName()$method->getDocComment();$method->isProtected();$method->getParameters(); $param->getName();$param->isDefaultValueAvailable();$param->getDefaultValue()

测试类如下:

test.php

<?phpheader("Content-type: text/html; charset=utf-8");require_once dir(__DIR__).'function.php';require_once dir(__DIR__).'TestClass.php'; $class_name = 'TestClass'; $reflection = new ReflectionClass ( $class_name );//通过反射获取类的注释$doc = $reflection->getDocComment ();//解析类的注释头$parase_result =  DocParserFactory::getInstance()->parse ( $doc );$class_metadata = $parase_result; //输出测试var_dump ( $doc );echo "\r\n";print_r( $parase_result );echo "\r\n-----------------------------------\r\n"; //获取类中的方法,设置获取public,protected类型方法$methods = $reflection->getMethods(ReflectionMethod::IS_PUBLIC + ReflectionMethod::IS_PROTECTED + ReflectionMethod::IS_PRIVATE);//遍历所有的方法foreach ($methods as $method) {    //获取方法的注释    $doc = $method->getDocComment();    //解析注释    $info = DocParserFactory::getInstance()->parse($doc);    $metadata = $class_metadata +  $info;    //获取方法的类型    $method_flag = $method->isProtected();//还可能是public,protected类型的    //获取方法的参数    $params = $method->getParameters();    $position=0;    //记录参数的次序    foreach ($params as $param){        $arguments[$param->getName()] = $position;        //参数是否设置了默认参数,如果设置了,则获取其默认值        $defaults[$position] = $param->isDefaultValueAvailable() ? $param->getDefaultValue() : NULL;        $position++;    }     $call = array(        'class_name'=>$class_name,        'method_name'=>$method->getName(),        'arguments'=>$arguments,        'defaults'=>$defaults,        'metadata'=>$metadata,        'method_flag'=>$method_flag    );    print_r($call);    echo "\r\n-----------------------------------\r\n";}

function.php【推荐学习:《PHP视频教程》】

<?phprequire_once dir(__DIR__).'DocParser.php'; function parse_doc($php_doc_comment) {    $p = new DocParser ();    return $p->parse ( $php_doc_comment );} class DocParserFactory{     private static $p;    private function DocParserFactory(){    }     public static function getInstance(){        if(self::$p == null){            self::$p = new DocParser ();        }        return self::$p;    } }

TestClass.php

<?phpclass TestClass {        public function getPublicMethod($no_default,$add_time = '0000-00-00') {        echo "public";    }        private function getPrivateMethod($no_default,$time = '0000-00-00') {        echo "private";    }         protected function getProtectedMethod($no_default,$time = '0000-00-00') {        echo "protected";    }}

DocParser.php  该类源自一个开源项目

<?phpclass DocParser {    private $params = array ();    function parse($doc = '') {        if ($doc == '') {            return $this->params;        }        // Get the comment        if (preg_match ( '#^/\*\*(.*)\*/#s', $doc, $comment ) === false)            return $this->params;        $comment = trim ( $comment [1] );        // Get all the lines and strip the * from the first character        if (preg_match_all ( '#^\s*\*(.*)#m', $comment, $lines ) === false)            return $this->params;        $this->parseLines ( $lines [1] );        return $this->params;    }    private function parseLines($lines) {        foreach ( $lines as $line ) {            $parsedLine = $this->parseLine ( $line ); // Parse the line                        if ($parsedLine === false && ! isset ( $this->params ['description'] )) {                if (isset ( $desc )) {                    // Store the first line in the short description                    $this->params ['description'] = implode ( PHP_EOL, $desc );                }                $desc = array ();            } elseif ($parsedLine !== false) {                $desc [] = $parsedLine; // Store the line in the long description            }        }        $desc = implode ( ' ', $desc );        if (! empty ( $desc ))            $this->params ['long_description'] = $desc;    }    private function parseLine($line) {        // trim the whitespace from the line        $line = trim ( $line );                if (empty ( $line ))            return false; // Empty line                if (strpos ( $line, '@' ) === 0) {            if (strpos ( $line, ' ' ) > 0) {                // Get the parameter name                $param = substr ( $line, 1, strpos ( $line, ' ' ) - 1 );                $value = substr ( $line, strlen ( $param ) + 2 ); // Get the value            } else {                $param = substr ( $line, 1 );                $value = '';            }            // Parse the line and return false if the parameter is valid            if ($this->setParam ( $param, $value ))                return false;        }                return $line;    }    private function setParam($param, $value) {        if ($param == 'param' || $param == 'return')            $value = $this->fORMatParamOrReturn ( $value );        if ($param == 'class')            list ( $param, $value ) = $this->formatClass ( $value );                if (empty ( $this->params [$param] )) {            $this->params [$param] = $value;        } else if ($param == 'param') {            $arr = array (                    $this->params [$param],                    $value             );            $this->params [$param] = $arr;        } else {            $this->params [$param] = $value + $this->params [$param];        }        return true;    }    private function formatClass($value) {        $r = preg_split ( "[\(|\)]", $value );        if (is_array ( $r )) {            $param = $r [0];            parse_str ( $r [1], $value );            foreach ( $value as $key => $val ) {                $val = explode ( ',', $val );                if (count ( $val ) > 1)                    $value [$key] = $val;            }        } else {            $param = 'Unknown';        }        return array (                $param,                $value         );    }    private function formatParamOrReturn($string) {        $pos = strpos ( $string, ' ' );                $type = substr ( $string, 0, $pos );        return '(' . $type . ')' . substr ( $string, $pos + 1 );    }}

以上是“php获取方法的注释”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网PHP编程频道!

--结束END--

本文标题: php获取方法的注释

本文链接: https://www.lsjlt.com/news/250778.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • php获取方法的注释
    小编给大家分享一下php获取方法的注释,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!php获取方法的注释:首先打开相应的PHP文件;然后通过php中的反射机制,获...
    99+
    2023-06-08
  • golang获取注释
    在编程的过程中,注释可以帮助程序员更好地理解代码的含义和功能,对于Go语言(Golang)来说也不例外。在Go语言中,我们可以使用特定的方式来获取注释,这样可以方便我们进行代码的优化和调试。一、Go语言中的注释在Go语言中,注释可以用两种方...
    99+
    2023-05-16
  • Oracle如何获取表注释和列注释
    这篇文章主要介绍Oracle如何获取表注释和列注释,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!全部表select table_name from&nb...
    99+
    2022-10-18
  • python获取函数注释 __doc__
    使用 help  函数 可以查看 函数的注释内容 但是它也有点"添油加醋" 其实函数的注释被保存在 __doc__属性里面  PS 双下划线 def f(): """这里是f函数""" pass print('====...
    99+
    2023-01-30
    注释 函数 python
  • golang如何获取注释内容
    这篇文章主要介绍“golang如何获取注释内容”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“golang如何获取注释内容”文章能帮助大家解决问题。在golang中,可以使用godoc工具来提取注释内...
    99+
    2023-07-05
  • golang怎么获取注释内容
    在golang中,可以使用godoc工具来提取注释内容。godoc工具会从Go程序和包文件中提取顶级声明的首行注释以及每个对象的相关注释,并生成相关文档,也可以作为一个提供在线文档浏览的web服务器。本教程操作环境:windows10系统、...
    99+
    2023-05-14
    注释 Golang go语言
  • 获取navicat注册码的方法
    小编给大家分享一下获取navicat注册码的方法,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Navicat for MySQL注册码用来激活 Navicat for MySQL 软件,只...
    99+
    2022-10-18
  • golang读取注释内容的两种方法
    在Go语言中,注释是一个重要的功能,一个良好的注释可以使代码更加易于理解和维护。但是,有时候我们需要在代码中读取注释。本文将介绍一些方法来实现这个目标。基本的注释读取方法在Go语言中,注释可以使用//和/ /来表示单行注释和多行注释。我们可...
    99+
    2023-05-14
  • java怎么获取注解标注的方法
    可以使用反射机制来获取注解标注的方法。 首先,需要获得要获取注解的类的Class对象,可以通过类名.class或者对象.getCla...
    99+
    2023-10-26
    java
  • JavaScript注释的方法
    本篇内容介绍了“JavaScript注释的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  ...
    99+
    2022-10-19
  • php添加注释的方法有哪些
    在PHP中,添加注释的方法有以下几种:1. 单行注释:使用双斜线(//)来注释一行代码,该行后面的所有内容都会被注释掉。示例:```...
    99+
    2023-10-09
    php
  • Mybatis Generator 获取不到字段注释的解决
    目录Mybatis Generator 获取不到字段注释解决方法Oracle 数据库MySql 数据库详解mybatis-generator生成数据表中注释1.克隆项目2.修改pom...
    99+
    2022-11-12
  • java如何获取方法上的注解
    要获取方法上的注解,可以使用Java的反射机制。以下是一种常见的方法:1. 首先,使用`Class`类的`getMethod`或`g...
    99+
    2023-09-20
    java
  • java怎么获取方法上的注解
    在 Java 中,可以使用反射来获取方法上的注解。可以按照以下步骤获取方法上的注解: 使用 Class 对象的 getMethod...
    99+
    2023-10-24
    java
  • MySQL单行注释和多行注释的方法
    这篇文章主要讲解了“MySQL单行注释和多行注释的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL单行注释和多行注释的方法”吧! ...
    99+
    2022-10-19
  • navicat中注释的方法
    这篇文章将为大家详细讲解有关navicat中注释的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在 navicat 中有三种注释的书写方式:以 # 开头的字符串,可以...
    99+
    2022-10-18
  • php正则实现删除注释的方法
    这篇文章给大家分享的是有关php正则实现删除注释的方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。php正则实现删除注释的方法:首先创建一个PHP示例文件a;然后创建一个test文件;接着通过“highligh...
    99+
    2023-06-08
  • Java如何获取属性的注释信息详解
    前言 注解是JavaSE5.0开始提供的一项新特性,利用此特性可以通过特定的注解标签为程序提供一些描述性信息。这些描述性信息可以在编译或运行时为编译器、运行环境提供附加的信息,从而简...
    99+
    2022-11-12
  • intellijidea自动生成类注释和方法注释配置方法
    intellij idea 自动生成类注释和方法注释 1.新建类,自动生成类注释的模板配置 File->Settings->Editor->File and Cod...
    99+
    2023-01-28
    intellij idea自动生成类注释和方法注释设置方法 intellij idea自动生成注释 intellij idea自动生成
  • 获取wordpress注册用户的数量的方法
    本文实例讲述了获取wordpress注册用户的数量的方法分享给大家供大家参考。具体实现方法如下: 方法一,代码如下:复制代码代码如下:global $wpdb $users = $wpdb->get_var("s...
    99+
    2022-06-12
    获取 wordpress 注册用户 数量 方法
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作