azhai/code-refactor
Composer 安装命令:
composer require azhai/code-refactor
包简介
Toolset for generating PHP code
关键字:
README 文档
README
基于PHP-Parser的代码重构工具,只在PHP-Parser v3.1.0 (要求php v5.5+)下测试
基本用法
<?php error_reporting(E_ALL); defined('VENDOR_DIR') or define('VENDOR_DIR', dirname(__DIR__) . '/vendor'); require_once VENDOR_DIR . '/azhai/coderefactor/src/bootstrap.php'; ClassLoader::register('PhpParser', VENDOR_DIR . '/nikic/php-parser/lib/PhpParser/'); use CodeRefactor\Refactor; use CodeRefactor\Visitor\BlankVisitor; use CodeRefactor\Mixin\VisitorMixin; /** * 找出 $this->setName(...); 的代码 */ function ft_set_name($node) { $name = VisitorMixin::getExprAttr($node, 'name'); $var = VisitorMixin::getExprAttr($node, 'var', 'name'); if ('setName' === $name && 'this' === $var) { return $node->args; } } /** * 将上面的代码改为 $this->setName2(..., ...); */ function cb_set_name2($node, $args) { $full_name = VisitorMixin::getExprAttr($args[0], 'value', 'value'); @list($first_name, $last_name) = explode(' ', strval($full_name), 2); $node->args[0]->value->value = trim($first_name); $node->args[] = VisitorMixin::createArg(trim($last_name) ?: ''); return $node; } //遍历和修改工具 $visitor = new BlankVisitor(); $visitor->addRule('Stmt_Class'); //遍历Class的子节点,找出所有Method $visitor->addRule('Stmt_ClassMethod'); //遍历Method的子节点,找出所有代码块 $visitor->addRule('Expr_MethodCall', 'ft_set_name', 'cb_set_name2'); $files = Refactor::listFiles(__DIR__, '/\.class\.php$/'); $ref = new Refactor(['phpVersion' => 'ONLY_PHP5']); $ref->addVisitor($visitor); $codes = $ref->parseFiles($files); foreach ($codes as $path => $code) { //添加一个常量和一个属性(粗粒度) $code->find('classes', false, function ($offset, $code) { $class = $code->stmts[$offset]; $class->setConst('MONTHES_PER_YEAR', 12); $class->setProperty('monthes_per_year', 12); }); //使用Visitor检查和修改所有代码(细粒度) $code->fixedBy($ref); //写入新文件 $ref->writeFile($path, $path . '.new'); }
azhai/code-refactor 适用场景与选型建议
azhai/code-refactor 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 134 次下载、GitHub Stars 达 3, 最近一次更新时间为 2018 年 01 月 15 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「code generation」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 azhai/code-refactor 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 azhai/code-refactor 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 azhai/code-refactor 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Memio's PrettyPrinter, used to generate PHP code from given Model
Toolset for generating PHP code
Fabricates patterns.
PHP PDF library for generating and importing PDF documents. A component of the Pop PHP Framework
REST PDF Invoices for Magento 2
Common PHP filters for code generation
统计信息
- 总下载量: 134
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 3
- 点击次数: 4
- 依赖项目数: 1
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2018-01-15