You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检测PHP文件中是否存在与类名同名的构造函数?

检测PHP文件中类名同名构造函数的解决方案

实现命令

find . -type f -name '*.php' -exec bash -c '
  file="$1"
  # 提取第一个非注释行的类名
  class_name=$(grep -E "^[[:space:]]*class[[:space:]]+" "$file" | grep -v "^[[:space:]]*//" | head -n1 | awk "{print \$2}")
  if [ -n "$class_name" ]; then
    # 检查是否存在不区分大小写的同名构造函数(排除注释行)
    if grep -qi "^[[:space:]]*function[[:space:]]+$class_name[[:space:]]*(" "$file" | grep -v "^[[:space:]]*//"; then
      echo "$file"
    fi
  fi
' _ {} \;

命令细节拆解

  • 遍历所有PHP文件:find . -type f -name '*.php' 定位当前目录下所有PHP格式文件
  • 提取类名:
    • grep -E "^[[:space:]]*class[[:space:]]+"匹配行首(含空白字符)的类定义行
    • grep -v "^[[:space:]]*//"过滤掉以//开头的注释行,避免误提取注释里的类名
    • head -n1取文件中第一个类定义,awk "{print \$2}"提取class后的类名字段
  • 检查构造函数:
    • grep -qi开启不区分大小写匹配,检查是否存在与类名同名的函数定义
    • 同样过滤注释行,避免把注释里的函数定义误判为有效构造函数

注意事项

  • 仅支持单行的类和函数定义,若类名或函数定义跨多行,需要调整正则规则适配
  • 包含多个类的文件,只会检查第一个类的构造函数匹配情况

内容的提问来源于stack exchange,提问作者Kevin Waterson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 23:17:10