PHP 中各种命名规则的总结
一般约定而言 类、函数和变量的名字应该是能够让代码阅读者能够容易地知道这些代码的作用,应该避免使用凌磨两可的命名。
以下是在开发过程中常见的命名规则总结
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 )参考地址
PHP 中各种命名规则的总结的更多相关文章
- m_Orchestrate learning system---十四、数据表中字段命名规则
m_Orchestrate learning system---十四.数据表中字段命名规则 一.总结 一句话总结:a.保证唯一 b.见名知意 1.注意php中的数组类函数和字符串类函数的前缀? 数组类 ...
- C# 中的命名规则
需要注意: C# 区分大小写 ,若有int a 和 int A ,则a, 和 A是不同的 普通字段,属相,方法,类的命名规则: C#中推荐使用 camelCasing ,和 PascalCasing ...
- 解剖Nginx·模块开发篇(4)模块开发中的命名规则和模块加载与运行流程
1 命名规则 1.1 基本变量 基本变量有三个: ngx_module_t 类型的 ngx_http_foo_bar_module: ngx_command_t 类型的数组 ngx_http_foo_ ...
- javascript中变量命名规则
前言 变量的命名相对而言没有太多的技术含量,今天整理有关于变量命名相关的规则,主要是想告诉大家,虽然命名没有技术含量,但对于个人编码,或者说一个团队的再次开发及阅读是相当有用的.良好的书写规范可以让你 ...
- JAVA 中的命名规则
命名规则– 基本要求• 见名知意– 常见命名的规则 • 包 (其实就是文件夹,用于对类进行管理)– 全部小写, 多级包用点隔开.– com,com.itheima • 类– 一个单词首字母大写 Stu ...
- ava包(package)的命名规范,java中package命名规则
Java的包名都有小写单词组成,类名首字母大写:包的路径符合所开发的 系统模块的 定义,比如生产对生产,物资对物资,基础类对基础类.以便看了包名就明白是哪个模块,从而直接到对应包里找相应的实现. 由于 ...
- java中的命名规则
转载自:http://growstep.diandian.com/post/2011-08-17/3989094 1.类名首字母应该大写.属性(成员变量).方法.对象变量以及所有标识符(如形式参数.实 ...
- vue 项目中 js命名规则
类型 规范 示例 常量 全字符大写,单词用 '_' 分隔 FETCH_USERS.GET_USERS 变量.函数 小写开头驼峰式 camelCase 类.特殊意义的命名空间 大写开头驼峰式 Camel ...
- html页面的CSS、DIV命名规则
CSS命名规则 头:header 内容:content/containe 尾:footer 导航:nav 侧栏:sidebar 栏目:column 页面外围控制整体布局宽度:wrapper 左右中:l ...
随机推荐
- Velocity学习3
Velocity快速入门教程 Apache的速度是一个基于Java的的模板引擎(模板引擎),它允许任何人仅仅简单的使用模板语言(模板语言)来引用由java的代码定义的对象. 官网介绍如下: Veloc ...
- PKUWC2019题解
这里其实只放一下题面和一些提示,大家评一评有几道题可做 题面全部蒯自xzz的博客 Day 1 T1 题面 一个有向图,每一条边可能存在也可能不存在,求拓扑序列数量的期望乘\(2^m\) 没有重边自环, ...
- spring整合ehcache注解实现查询缓存,并实现实时缓存更新或删除
转载: http://www.importnew.com/23358.html 写在前面:上一篇博客写了spring cache和ehcache的基本介绍,个人建议先把这些最基本的知识了解了才能对今天 ...
- pycharm如何回到过去某个时间
在编写代码是,我们可能会写错代码,或者是误删某个文件,那么问题来了,如何回到过去的某个时间段,来弥补我们犯下的错呢? 1.如果是恢复删除的文件则右击之前文件所在的文件夹 2.右击文件夹的显示效果如图 ...
- Mkdir方法
新建目录或文件夹. 语法 MkDir 路径 所需的_路径_参数是一个字符串表达式,标识的目录或文件夹创建. _路径_可以包含驱动器. 如果未指定驱动器, MkDir当前的驱动器上创建新目录或文件夹. ...
- C++对运算符进行重载学习笔记
1. 一个类的成员函数是暗含着 this 指针的,eg; #include<iostream> using namespace std; class A{ public: A(){ x ...
- WebGL------osg框架学习二
今天我们继续来学习osg.js框架.上一篇我们介绍了DrawActor对象绘制操作类和Drawable可绘制对象类,我们大致知道了osg对Drawable可绘制对象的绘制流程管理.今天我们要继续介绍S ...
- SICP读书笔记 2.4
SICP CONCLUSION 让我们举起杯,祝福那些将他们的思想镶嵌在重重括号之间的Lisp程序员 ! 祝我能够突破层层代码,找到住在里计算机的神灵! 目录 1. 构造过程抽象 2. 构造数据抽象 ...
- VGG——Very deep convolutional networks for large-scale image recognition
1. 摘要 在使用非常小(3×3)的卷积核情况下,作者对逐渐增加网络的深度进行了全面的评估,通过设置网络层数达 16-19 层,最终效果取得了显著提升. 2. 介绍 近来,卷积神经网络在大规模图像识别 ...
- mybatis学习------打包xml映射文件
编译mybatis时,idea不会将mybatis的xml映射文件一起打包进jar,即在编译好的jar包里缺少mybatis映射文件,导致网站加载失败 为解决这个问题,可在mybatis对应modul ...