一般约定而言 类、函数和变量的名字应该是能够让代码阅读者能够容易地知道这些代码的作用,应该避免使用凌磨两可的命名。

以下是在开发过程中常见的命名规则总结

1、类的命名

  • 使用大写字母作为词的分割,其余的字母均为小写。
  • 类名的首字母必须为大写英文字母。
  • 类名命名不要使用下划线('_')。
  • 如:TestClass、User、UserType、ControllerAdmin。

2、类属性的命名

  • 类的属性命名应该以字符'm'为前缀。
  • 前缀'm'之后采用和类名一致的命名规则。
  • 前缀'm'总是在名字的开头起到修饰的作用,就像'r'开头表示引用一样。
  • 如: mUserName、mUserKey 等。

3、方法的命名

  • 方法要依赖于类对象,而函数不需要依赖于类对象。因此一般命名时注意区分方法和函数的命名,函数一般作为扩展文件引入。
  • 方法的作用都是执行一个动作,达到一个目的。所以名称应该说明该方法是做什么的。一般名称的前缀都是有第一规律的,如is(判断)、get(得到),set(设置)。
  • 方法的命名第一个单词的首字母小写,之后每个单词的首字母必须为大写。如:
    class UserModel
    {
    $mUserName = ''; //设置类的属性
    $mUserKey =''; function getUser($userId)
    { //定义方法,得到用户信息
    ...
    }
    }

4、方法中参数的命名

  • 第一个字符或第一个词必须为小写字母。
  • 在第一个字符或第一个词之后的词都按照类命名的规则首字母大写。
  • 如:
    class User
    {
    function getUser($userId)
    {
    ...
    } function getMe(&$rUserKey)
    {
    ...
    }
    }

      

5、引用变量

  • 引用变量要用 'r'前缀来修饰。如:$r_key = &$key;

6、变量的命名

  • 一般所有字母都使用小写。
  • 使用下划线'_'作为每个词的分割。
  • 如: $msg_code、$msg_type、$msg_error 等。
  • 临时变量通常使用 i、j、k、m、n,它们一般用于表示整形;c、d、e、s 它们一般用于字符型。
  • 实例变量前需要用一个下滑线 '_'来修饰,首单词小写,其余的首字母大写
  • 如:$_userType = new UserType() 。

7、全局变量

  • 全局变量应该用前缀 'g'来修饰。如 :global $gTest 。
  • 超全局变量 $GLOBALS['gTest2'] = '' 。

8、常量和全局常量

  • 常量不能以 '$' 开头。
  • PHP常量是通过define()函数进行定义。
  • 使用constant()函数获取常量值。
  • 使用defined()函数判断常量是否定义。
  • 使用get_defined_constants()获取所有当前已经定义的常量。
  • PHP中常用预定义常量。如:
     1、__FILE__              程序文件名
    2、__LINE__ 程序所在行数
    3、PHP_VERSION PHP程序版本
    4、PHP_OS PHP解析器的操作系统
    5、TRUE 真值True
    6、FALSE 假值False
    7、NULL null值
    8、E_ERROR 指向最近的错误处
    9、E_WARNING 指向最近的警告处
    10、E_PARSE 解析语法有潜在问题处
    11、NOTICE 发生异常,但不一定是错误处 错误调试常量,了解更多查看error_reporting()函数

      

  • 命名应该全部使用大写字母表示,用下滑线'—'来进行词的分割。如:
    define('APP_VERSION', '1.1.0');
    difine('APP_NAME', 'BRES');

9、静态变量

  • 静态变量应该使用前缀 's' 来修饰。如:static $sName= '' 。

10、函数的命名

  • 所有字母小写,多个单词之间用下滑线 '—' 分割。如:

    public function get_ip(){
    ip = $_SERVER['REMOTE_ADDR'] ?? '0.0.0.0';
    if (getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
    $ip = getenv('HTTO_CLIENT_IP');
    } elseif (getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {
    $ip = getenv('HTTP_X_FORWARDED_FOR');
    } elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {
    $ip = getenv('REMOTE_ADDR');
    } elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {
    $ip = $_SERVER['REMOTE_ADDR'];
    }
      //正则匹配IP 7~15位
      $res = preg_math('/[\d\.]{7,15}/',$ip,$ips)?$ips[0]:'';
    return $res;
    }

      

11、以上的各种命名规则,可以组合一起来使用,如:

class Example{
static $msValue = ""; //该参数既是类属性,又是静态变量
global $gmTst; //声明静态全局变量 }

PHP 标准规范 PSR(PHP Standard Recommendations )参考地址

http://psr.phphub.org/

PHP 中各种命名规则的总结的更多相关文章

  1. m_Orchestrate learning system---十四、数据表中字段命名规则

    m_Orchestrate learning system---十四.数据表中字段命名规则 一.总结 一句话总结:a.保证唯一 b.见名知意 1.注意php中的数组类函数和字符串类函数的前缀? 数组类 ...

  2. C# 中的命名规则

    需要注意: C# 区分大小写 ,若有int a 和 int A ,则a, 和 A是不同的 普通字段,属相,方法,类的命名规则: C#中推荐使用  camelCasing ,和 PascalCasing ...

  3. 解剖Nginx·模块开发篇(4)模块开发中的命名规则和模块加载与运行流程

    1 命名规则 1.1 基本变量 基本变量有三个: ngx_module_t 类型的 ngx_http_foo_bar_module: ngx_command_t 类型的数组 ngx_http_foo_ ...

  4. javascript中变量命名规则

    前言 变量的命名相对而言没有太多的技术含量,今天整理有关于变量命名相关的规则,主要是想告诉大家,虽然命名没有技术含量,但对于个人编码,或者说一个团队的再次开发及阅读是相当有用的.良好的书写规范可以让你 ...

  5. JAVA 中的命名规则

    命名规则– 基本要求• 见名知意– 常见命名的规则 • 包 (其实就是文件夹,用于对类进行管理)– 全部小写, 多级包用点隔开.– com,com.itheima • 类– 一个单词首字母大写 Stu ...

  6. ava包(package)的命名规范,java中package命名规则

    Java的包名都有小写单词组成,类名首字母大写:包的路径符合所开发的 系统模块的 定义,比如生产对生产,物资对物资,基础类对基础类.以便看了包名就明白是哪个模块,从而直接到对应包里找相应的实现. 由于 ...

  7. java中的命名规则

    转载自:http://growstep.diandian.com/post/2011-08-17/3989094 1.类名首字母应该大写.属性(成员变量).方法.对象变量以及所有标识符(如形式参数.实 ...

  8. vue 项目中 js命名规则

    类型 规范 示例 常量 全字符大写,单词用 '_' 分隔 FETCH_USERS.GET_USERS 变量.函数 小写开头驼峰式 camelCase 类.特殊意义的命名空间 大写开头驼峰式 Camel ...

  9. html页面的CSS、DIV命名规则

    CSS命名规则 头:header 内容:content/containe 尾:footer 导航:nav 侧栏:sidebar 栏目:column 页面外围控制整体布局宽度:wrapper 左右中:l ...

随机推荐

  1. 将windows上.net core 发布的程序部署到linux(ubantu等)上

    首先在linux安装相应的.net core 环境,根据官方的示例安装即可:参考地址:https://dotnet.microsoft.com/learn/dotnet/hello-world-tut ...

  2. Restful和WeBAPI学习笔记

    1.restful是基于无状态的,所谓无状态就是说客户端和服务端的每次通话都是独立的,不存在session和cookie之类的保存状态的机制,基于该协议可实现简单的curd操作, 其操作分为get\p ...

  3. python 小技巧之获取固定下面包含的某种类型文件的个数

    遇到这样一个问题.我想要统计某个文件夹下有多少个py文件怎么办. 用python能解决吗?答案,能. 解决办法,使用glob 代码如下: import glob path_file_number=gl ...

  4. Fortran的数组与指针

    个人理解,欢迎指正 指针就是记录数据的内存地址的变量.指针可以指向单个变量,也可以指向数组. 数组是一个概念,是若干个类型相同的元素的有序集合.在Fortran语言中,数组中存放的元素,可以是整数,实 ...

  5. eclipse生成ant build.xml打war包

      背景: 最近想实现jenkins+ant命令一键打war包,部署到测试环境,然后自动化接口测试,结果发现用eclipse本身导出的ant buildfiles文件,打包出来都是空文件.很多代码都没 ...

  6. python容器类型的协议

    1.协议(Protocols)与其他编程语言中的接口恒相似,它规定你哪些地方必须要定义,然而在python中的协议就显得不那么正式,事实上,在python中,协议更像是一种指南. 2.序列类型和映射类 ...

  7. 论文阅读 | Formalizing Visualization Design Knowledge as Constraints: Actionable and Extensible Models in Draco

    1. Introduction 程序员编写的可视化图表与专家眼中的设计标准总存在差距.我们无法每次都向可视化专家咨询设计上的意见,所以我们需求将设计标准,研究成果应用于自动化设计工具的正式框架,这些工 ...

  8. 布线问题 (NYOJ38)

    布线问题 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 南阳理工学院要进行用电线路改造,现在校长要求设计师设计出一种布线方式,该布线方式需要满足以下条件:1.把所有 ...

  9. GsonFormat插件主要用于使用Gson库将JSONObject格式的String 解析成实体,该插件可以加快开发进度,使用非常方便,效率高。

    GsonFormat插件主要用于使用Gson库将JSONObject格式的String 解析成实体,该插件可以加快开发进度,使用非常方便,效率高. 插件地址:https://plugins.jetbr ...

  10. hover时显示可跟随鼠标移动的浮动框,运用函数节流与去抖进行优化

    在很多笔试面试题中总能看到js函数去抖和函数节流,看过很多关于这两者的讨论,最近终于在一个需求中使用了函数去抖(debounce)和函数节流(throttle). 需要完成的效果是,鼠标在表格的单元格 ...