nikic / PHP-Parser 包的简单实用
时间:2020-01-09
本文章向大家介绍nikic / PHP-Parser 包的简单实用,主要包括nikic / PHP-Parser 包的简单实用使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
解析PHP文件:
<?php require 'vendor/autoload.php'; use PhpParser\ParserFactory; $code = file_get_contents(dirname(__FILE__) . '/src/Aop/Target.php'); $phpFactory = new ParserFactory(); $parser = $phpFactory->create(ParserFactory::PREFER_PHP7); //var_dump($parser->parse($code));die(); foreach ($parser->parse($code) as $k => $v) { if ($v instanceof \PhpParser\Node\Stmt\Namespace_) { echo 'class namespace: ' . join('\\', $v->name->parts), PHP_EOL; foreach ($v->stmts as $kk => $vv) { if ($vv instanceof \PhpParser\Node\Stmt\Use_) { //多个use循环 foreach ($vv->uses as $kkk => $vvv) { echo 'class use: ' . join('\\', $vvv->name->parts), PHP_EOL; echo 'class use alias: ' . $vvv->alias, PHP_EOL; } } elseif ($vv instanceof \PhpParser\Node\Stmt\Class_) {//类内容 echo 'class extends: ' . $vv->extends, PHP_EOL; echo 'class implements: ' . join(',', $vv->implements), PHP_EOL; echo 'class name: ' . $vv->name, PHP_EOL; foreach ($vv->stmts as $kkk => $vvv) {//类属性和方法 if ($vvv instanceof \PhpParser\Node\Stmt\Property) {//属性 foreach ($vvv->props as $kkkk => $vvvv) { echo 'class property name: ' . $vvvv->name, PHP_EOL; echo 'class property value: ' . $vvvv->default->value, PHP_EOL; } } elseif ($vvv instanceof \PhpParser\Node\Stmt\ClassMethod) {//方法 echo 'class method name: ' . $vvv->name->name, PHP_EOL; echo 'classs method returnType: ' . $vvv->returnType, PHP_EOL; foreach ($vvv->params as $kkkk => $vvvv) {//方法参数 echo 'classs method param name: ' . $vvvv->var->name, PHP_EOL; echo 'classs method param default: ' . $vvvv->default, PHP_EOL; } foreach ($vvv->stmts as $kkkk => $vvvv) {//方法返回 echo 'class method return value: ' . $vvvv->expr->value, PHP_EOL; } } } } } } }
执行后:
原文地址:https://www.cnblogs.com/cshaptx4869/p/12171508.html
- Android Studio你不知道的调试技巧
- Android 数据绑定框架DataBinding,堪称解决界面逻辑的黑科技
- 汽车黑客:没有Security就没有Safety
- Android 自定义View高级特效,神奇的贝塞尔曲线
- Android二维码扫描开发(一):实现思路与原理
- 说一道简单的BCTF题 – 分分钟而已
- 安全扫描工具Nmap引擎理解文档
- AppFuse项目笔记(1)
- 电子商务系统ShopNC多个漏洞(可暴力 getshell)
- 利用Google爬虫DDoS任意网站
- 极客都应该知道的Linux技巧
- 酷似感冒,变色龙病毒可在WiFi接入点间感染
- Linux下的常见错误配置
- 使用C#实现蜘蛛程序
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- linux查看软件的安装位置简单方法
- 使用 bind 设置 DNS 服务器的方法
- Linux jdk安装及环境变量配置教程(jdk-8u144-linux-x64.tar.gz)
- centos6.6 下 安装 php7 + nginx环境的方法
- 如何优雅地删除 Linux 中的垃圾文件的方法
- Ubuntu18.04 安装 Anaconda3的教程详解
- VScode Remote SSH通过远程编辑与调试代码
- Ubuntu18.04下安装配置SSH服务的方法步骤
- Openssl实现双向认证教程(附服务端客户端代码)
- centos8使用Docker部署Django项目的详细教程
- ubuntu18.04 安装qt5.12.8及环境配置的详细教程
- 安装Ubuntu20.04与安装NVIDIA驱动的教程
- Ubuntu下安装nvidia显卡驱动(安装方式简单)
- Ubuntu 20.04 apt 更换国内源的实现方法
- Android设计模式之单例模式解析