PHP 编码规范

Grok 3国内怎么用?超详细使用指南+实用指令模板 主要是用于快速分析学术论文,提取关键信息,总结研究成果。Analyze the following research paper: [粘贴或上传论文内容]1. Extract key findings, methodologies, and conclusions. (提取主要发现、方法和结论。2. Identify statistical significance and data points. (识别统计显著性和数据点。 阅读详情
href="style.css" rel="stylesheet" type="text/css">

PHP 编码规范

原文:http://pear.php.net/manual/en/standards.php

翻译:廖宇雷

最后更新日期:2003/05/06

 

内容列表


缩进

缩进使用4个空格,而不是 tab。如果你使用 Emacs 编辑 PEAR 代码,你应该设置 indent-tabs-mode 为 nil。下面是一个 mode hook 的示例,用于设置 Emacs 符合缩进标准(你必须确保在编辑 PHP 文件时,这些设置发生作用):

(defun php-mode-hook ()
  (setq tab-width 4
        c-basic-offset 4
        c-hanging-comment-ender-p nil
        indent-tabs-mode
        (not
         (and (string-match "///(PEAR//|pear//)/" (buffer-file-name))
              (string-match "/.php$" (buffer-file-name))))))

这里是同等效果的 vim 规则:

set expandtab
  set shiftwidth=4
  set softtabstop=4
  set tabstop=4


控制结构

控制结构包含 if、for、while、switch 等。这里有一个 if 语句的示例和一个 switch 语句的示例:

if 语句的示例:

<?php
if ((condition1) || (condition2)) {
    action1;
} elseif ((condition3) && (condition4)) {
    action2;
} else {
    defaultaction;
}
?>

switch 语句的示例:

<?php
switch (condition) {
case 1:
    action1;
    break;
case 2:
    action2;
    break;
default:
    defaultaction;
    break;
}
?>

控制语句应该在控制关键词和开始的圆括号之间应该有一个空格,以此和函数调用进行区别。

强烈建议你总是使用花括号将控制结构各部分标识出来。即使是在技术上可以不使用花括号的地方。这可以增加代码的可读性,同时避免在结构部分增加新行后引入逻辑上的错误。

原始代码:

if (condition)
    return true;
else
    return
false;

修改后的代码:

if (condition)
    do something; // 出现逻辑错误
    return true;
else
    return
false;

正确的做法:

if (condition) {
    do something;
    return true;
} else {
    return
false;
}


函数调用

调用函数时,函数名和开始的括号之间不应该有空白字符。参数和开始及结束的括号之间不应有空格。而除第一个参数外,其他参数都应该用一个空格分隔。这里有一个示例:

<?php
$var = foo($bar, $baz, $quux);
?>

像上面的示例代码,赋值运算等号两边都应该使用一个空格。如果是相关的赋值运算,应该采用下面的形式以提供更好的可读性:

<?php
$short = foo($bar);
$long_variable = foo($baz);
?>


函数定义

按照“one true brace”约定声明函数:

<?php
function fooFunction($arg1, $arg2 = '')
{
    if (condition) {
        statement;
    }
    return
$val;
}
?>

“one true brace”约定就是开始的花括号单独占一行,而不是跟在其他语句后面。

具有默认值的参数应该位于参数列表的后面(事实上 PHP 语言定义也要求如此)。如果适合,函数应该总是返回一个有意义的值。这里有一个稍微长一点的示例:

<?php
function connect(&$dsn, $persistent = false)
{
    if (is_array($dsn)) {
        $dsninfo = &$dsn;
    } else {
        $dsninfo = DB::parseDSN($dsn);
    }

    if (!$dsninfo || !$dsninfo['phptype']) {
        return $this->raiseError();
    }
    return
true;
}
?>


注释

类型(class)的联机文档应该符合 PHPDoc(类似于 JavaDoc)的约定。更多关于 PHPDoc 的信息可以访问 http://www.phpdoc.de/ 获得。

此外,强烈鼓励使用非文档注释。一般性规则是对于那些容易忘记作用的代码添加简短的介绍性注释。

推荐使用 C 样式的注释(/* */)和标准 C++ 注释(//),而不应该使用 Perl/shell 样式的注释(#)。


包含代码

无论在什么地方无条件包含一个类型文件,应该使用 require_once()。如果有条件的包含一个类型文件(例如使用工厂方法),应该使用 include_once()。使用两者中的任何一个都能够确保类型文件只包含一次。它们共享一个文件列表,因此你不需要担心混淆他们 —— 一个文件使用 require_once() 包含后不会在 include_once() 中再一次被包含。

备注:include_once() 和 require_once() 是一个声明,而不是函数。你不需要使用圆括号将文件名扩起来(不过使用括号也不会出现错误)。


PHP 代码标记

总是使用 <?php ?> 来界定 PHP 代码,而不要使用 <? ?> 速记方式。这是为了符合 PEAR 一致性所必须的,同时也是在不同操作系统和不同安装设置环境下移植 PHP 代码所要求的。


头注释块

PEAR 发布的所有源代码文件头部都应该包含下面的注释块:

<?php
/* vim: set expandtab tabstop=4 softtabstop=4 shiftwidth=4: */
// +----------------------------------------------------------------------+
// | PHP version 4                                                        |
// +----------------------------------------------------------------------+
// | Copyright (c) 1997-2002 The PHP Group                                |
// +----------------------------------------------------------------------+
// | This source file is subject to version 2.0 of the PHP license,       |
// | that is bundled with this package in the file LICENSE, and is        |
// | available at through the world-wide-web at                           |
// | http://www.php.net/license/2_02.txt.                                 |
// | If you did not receive a copy of the PHP license and are unable to   |
// | obtain it through the world-wide-web, please send a note to          |
// | license@php.net so we can mail you a copy immediately.               |
// +----------------------------------------------------------------------+
// | Authors: Original Author <author@example.com>                        |
// | Your Name <you@example.com>                                          |
// +----------------------------------------------------------------------+
//
// $ Id $

?>

这里没有硬性规定要将一个代码贡献者的名字添加到文件注释的作者列表中。一般情况下,他们的更改属于“substantial”目录(意味大约10%到20%的代码被改写)。有一个例外就是代码贡献者重写了函数或者贡献了新的程序逻辑。

简单的代码重组和 bug 修复不应该增加新作者,这是不恰当的。

不在核心 PEAR 仓库中的文件应该有一个类似的注释块来说明版权、许可协议和作者。所有文件应该包含一个模式行(modeline,用于 vim 和 emacs)以确保一致性。


使用 CVS

这个小节的内容仅仅适用于 cvs.php.net 上使用 CVS 的包。

在每一个文件中包含 $Id $(两个 $ 符号之间的关键字不能够有空格,但由于此文档也是用 CVS 管理,因此只好加个空格,避免被 CVS 替换掉) CVS 关键字,以便查看文件当前状态和最后修改时间等信息。如果已经存在“Last Modified:”这样的信息,则替换为 $Id $ 标记。

这个小节的其他内容假定你有关于 CVS 标记和分支(branches)的基本知识。

CVS 标记用于标识你包中的文件释放之前所作的修订。下面的列表是必需使用和建议使用的 CVS 标记:

RELEASE_n_n

(必需的)用于标记一个释放版本。如果你没有使用这个标记,别人就没有办法在你发布一个释放版本时从 CVS 服务器获取你的包。

QA_n_n

(分支,可选)如果你觉得在发布释放版本之前要提供一个候选释放版本,那么一个好主意就是增加一个分支。这个分支可以让你将释放版本隔离出来,并在正式发布释放版本之前可以为这些分支单独应用更新。期间,正常的开发工作可以在主干上继续进行。

MAINT_n_n

(分支,可选)如果你需要创建一个较小修改的释放版本(例如在 1.2 之后发布 1.2.1)。那么你可以创建一个分支来达到目的。

仅有 RELEASE 标记是必须的,其他标记为了方便推荐你使用。

下面是一个如何为 "Money_Fast" 包 1.2 释放版本增加标记的示例:

$ cd pear/Money_Fast
$ cvs tag RELEASE_1_2
T Fast.php
T README
T package.xml

经过上面的操作,就可以在 PEAR Web 网站上获取你的一系列释放版本了。

这里是一个如何建立 QA 分支的示例:

$ cvs tag QA_2_0_BP
...
$ cvs rtag -b -r QA_2_0_BP QA_2_0
$ cvs update -r QA_2_0
$ cvs tag RELEASE_2_0RC1
...and then the actual release, from the same branch:
$ cvs tag RELEASE_2_0

"QA_2_0_BP" 标记是一个 "branch point" 标记,用于标记分支的开始。总是用这样的标记来标明分支的开始是一个好主意。MAINT 分支可以使用 RELEASE 标记作为它的分支起点。


示例中的 URL

所有示例中用到的 URL 地址都应该是 "example.com"、"example.org"、"example.net"。


命名约定

一般而言,class、函数和变量的名字应该总是能够描述让代码阅读者能够容易的知道这些代码的作用。

Classes

class 应该具有一个描述性的名字。可能时应该避免使用缩写。class 名字应该总是用一个大写字母开始。从 class 名字中也能够反映出 PEAR class 的层次。层次中的每个级别都用下划线进行分隔。好的 class 名字示例如下:

Log
Net_Finger
HTML_Upload_Error

函数和方法

函数和方法应该使用 "studly caps" 样式命名。函数应该将所在包的名字作为前缀,以避免与其他包的函数发生名字冲突。名字的受字母(前缀之后)应该是小写,每一个新单词应该以大写字母开头。下面是一些示例:

connect()
getData()
buildSomeWidget()
XML_RPC_serializeData()

私有 class 成员和属性(意味着 class 成员和属性只应该由同一个 class 中声明的成员使用。不过 PHP 并不支持强制性的私有命名空间)应该用一个下划线开头。示例:

_sort()
_initTree()
$this->_status

常数

常数应该总是全部使用大写字母命名,用下划线来分隔单词。常数名字的前缀应该使用大写的 class/包 名字。例如:DB:: 包使用的所有常数都已 DB_ 开头。

全局变量

如果你的包需要定义全局变量,那么应该用下划线跟上包的名字和另一个下划线作为开头。例如,PEAR 包使用一个全局变量名为 $_PEAR_destructor_object_list。

预定义的值 true、false 和 null

PHP 的内建值 true、false 和 null 必须全部用小写字母书写。

基于 LSTM 的船舶轨迹预测,单步预测 阅读详情

相关推荐

Snort源代码编译 _ 采坑之旅(for Windows VS2015)

    系统环境:Windows7 sp1 x64     编译环境:VS2015 SP1     Snort版本:2.9.12     daq版本:2.0.6     Snort官网:https://www.snort.org/downloads#snort-downloads 背景     最近需要实现一个类似网络防火墙的产品,主要参考Snort源码,先花了点时间简单读了下网上比较流行的《...

magictong的专栏 8888

php编码规范的目的,PHP编码规范

文件名:类:DemoTest.class.php接口:DemoTest.interface.php其他:demoTest.{style}.php命名规范:整体采用驼峰命名法,同时命名要有意义。全局变量:两边使用"_",中间采用驼峰命名法常量:全大写普通变量/类属性:驼峰命名法,可以在前面加上表示变量类型的缩写,要采用准确有意义的英文单词:字符串: $sMyName数组: $arrMyArray接口...

weixin_29745919的博客 123

CIC-IDS-2018数据集高效预处理实战:从数据清洗到特征整合

本文详细介绍了CIC-IDS-2018数据集的高效预处理方法,从数据清洗到特征整合的全流程实战。通过内存优化、异常值处理和特征工程等技巧,帮助网络安全研究人员快速处理大规模网络流量数据,提升机器学习模型的训练效率和准确率。特别针对特征数据的预处理提供了实用代码示例和优化建议。

weixin_29274969的博客 502

PHP编码规范

 注:这是从PHPCMS开发文档里看到编码规范,虽名为PHPCMS的开发规范,但我觉得所有的PHP编程都该如此。写了那么多PHP,很多编码对照这规范都感觉欠缺很多,今后一定要对照纠正。Phpcms 编码规范1. 引言…. 22. 适用范围…. 23. 标准化的重要性和好处…. 34. PHP编码规范与原则…. 34.1. 代码标记… 34.2. 注释… 34.3

静心斋 882

基于PTB-XL数据集的深度学习心电信号分类

心电信号的分析与处理是心血管疾病诊断的重要手段。该领域的主要工作领域是分类,它越来越多地得到基于机器学习的算法的支持。在这项工作中,开发了一个深度神经网络来自动分类初级心电信号。这项研究是在PTB-XL数据库中包含的数据上进行的。提出了三种神经网络架构:第一种基于卷积网络,第二种基于SincNet,第三种基于卷积网络,

weixin_55121617的博客 7007

基于AT32F421的紧凑型FOC电机驱动板设计

磁场定向控制(FOC)是永磁同步电机(PMSM)与无刷直流电机(BLDC)实现高精度转矩控制和高效运行的核心技术,其本质是通过Clarke/Park坐标变换解耦定子电流,实现d轴磁链与q轴转矩的独立调节。该技术依赖实时性严苛的电流采样、高精度位置反馈及确定性PWM生成,广泛应用于机器人关节、智能装备等中小功率伺服场景。国产Cortex-M4微控制器(如AT32F421)凭借集成ADC、高级定时器与DSP指令集,已成为低成本、高可靠FOC嵌入式实现的理想平台。本文围绕一款工程化FOC驱动板展开,涵盖低侧电流采

weixin_42510243的博客 704

是时候该注意下PHP的编码规范了

PHP的编码规范作用简单来讲就是可以提高代码可读性。。。巴拉巴拉一大堆,大家就算是细节不清楚,大概也应该了解一些,所以,咱这里就来总结一些,仅供参考哈。 1、文件标记 所有的PHP文件,其代码标记均要使用完整的PHP标签,不建议使用短标签,什么是短标签,下面这个就是: &lt;? echo 'luyaran'; ?&gt; 为什么呢?因为容易与XML混淆,并且不是所有的PHP版本和服...

luyaran的博客 265

海康视觉通讯配置

本文介绍了海康通讯管理中TCP和Modbus协议的配置方法。TCP通讯时,视觉系统作为服务器接收PLC客户端发送的触发信号,需注意十进制与十六进制字符串的转换。Modbus配置需填写PLC的IP地址和寄存器首地址,并预先定义整型变量。TCP通讯需开启16进制发送模式以避免数据格式问题。文章重点说明了不同通讯方式下的数据格式转换和参数设置要点。

A567852的博客 2243

整理了一份比较全面的PHP开发编码规范.

这些年来多从事Linux下PHP和C相关的开发,带过很多项目和团队,下面是根据经验整理的PHP编码规范,可以用作给大家的范例和参考,根据需要进行取舍和修改!(可能最新的一些php5的规范不够完整,今后有机会保持更新!)目录1 编写目的2 整体要求3 安全规范3.1 包含文件3.1.1 命名规则3.1.2 存放规则3.2 安全规则3.3 一些针对PHP的规则3.4 其它处理规则3.4.1 对

路 2万+

MediaCodec视频解码流程详解及参考demo

本文主要讲解mediacodec的视频解码流程,及demo参考例子。

分享音视频技术 7875

Pytorch实现之SRGAN+CBAM的结构设计

在SRGAN的残差连接中加入了CBAM注意力机制,同时设计了四类损失来训练。

LJ1147517021的博客 571

php 编码规范哪些_php编码规范有哪些?

为什么需要编码规范?为了提高工作效率,保证开发的有效性和合理性。为了提高代码可读性和可重复利用性,从而节约沟通成本。php编码规范1、文件格式● 所有php文件使用完整的php标签,如...

weixin_39984105的博客 273

北斗导航 | 基于matlab的卫星导航单点定位算法

单点定位(Single Point Positioning, SPP)通过接收机观测至少4颗卫星的伪距(含误差的距离测量值),解算接收机位置(经度、纬度、高度)及钟差。HDOP < 2 为高精度定位条件。

尘世冰封的专栏 970

php编码规范

1. 前言 源码文件必须采用UTF-8编码,且不得有BOM头,某些历史遗留的GBK模块除外。 编码风格没有太多的好坏之分, 最重要的是风格保持一致,编码规范有助于规范我们编码的风格,使代码具有更好的可读性。 编码风格百家齐放,不利于我们代码的维护和传承, 根据大家平时的开发情况,制定了此PHP编码规范。 每项规范前面的[强制]代表该规范需要强制执行,[建议]代表推荐执行但不强制。 ...

u012767684的博客 262

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

php 编码规范哪些_PHP编码规范

1. PHP编码规范如果您是ecstore开发人员,请详细阅读以下规范,并严格遵守。这样在保证您代码可读性的同时还可以大大减少我们的工作量。1.1. 命名1.1.1. 文件命名Note: 包含任何 PHP 代码的任何文件应扩展名应当为 ".php" 脚本除外。ecos的文件命名的准则是,class名称与文件名关联。关联的方法是以包所在的目录为根目录,到类所在的文件,将目录分隔符改为下划线即为此类的...

weixin_39801165的博客 212

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

PHP编码规范总结

学习PHP开发也有一两年之久了,一直以来都没有说要去写点什么东西,真是有点不应该。确实,写博客可以让自己总结自己在开发中所遇到的问题和一些解决的经验,然后将经验分享出去,这样也遵循Apache Licence了嘛(^∇^),那么本文是我自己在学习PHP时所使用的一些编码规范:文件格式、命名规范、注释规范、代码风格。

沁之祭的专栏 979

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

php 编码规范哪些_讲的非常不错的PHP编码规范

讲的非常不错的PHP编码规范更新时间:2008年01月07日 22:36:37 作者:讲的非常不错的PHP编码规范注:这是从PHPCMS开发文档里看到编码规范,虽名为PHPCMS的开发规范,但我觉得所有的PHP编程都该如此。写了那么多PHP,很多编码对照这规范都感觉欠缺很多,今后一定要对照纠正。Phpcms编码规范1.引言….22.适用范围….23.标准化的重要性和好处….34....

weixin_39834475的博客 233

说说PHP编码规范

本文详细规定了PHP开发的编码规范,主要包含三大方面:文件格式、命名约定和编码风格。在文件格式方面,要求使用四个空格缩进、变量对齐、控制行宽80字符以内、去除多余空格等。命名约定部分严格规范了各类文件、类、方法、变量的命名方式,强调使用驼峰法和小写下划线法,并详细说明了访问控制修饰符的使用规则。编码风格部分对代码结构、数组声明、大括号位置、类成员排序、函数定义等方面做出具体规定,同时规范了条件控制语句的书写格式,包括if-else和switch-case的排版要求。这些规范旨在提高代码可读性、可维护性和团队

oqqHeng12345678911的专栏 1093

php psr 编码规范_PSR编码规范

PSR-1 代码风格规范(1)常量命名:类中的常量所有字母都必须大写,单词间用下划线分隔(2)类命名:类的命名必须遵循 StudlyCaps 大写开头的驼峰命名规范(3)方法命名:方法名称必须符合 camelCase 式的小写开头驼峰命名规范PSR-2 代码风格规范(1)代码缩进:代码必须使用4个空格符而不是 tab键 进行缩进(2)空行:每个 namespace 命名空间声明语句和 use 声明...

weixin_34917038的博客 533
上一篇: mysql4.1以上版本连接时出现Client does not support authentication protocol问题解决办法
下一篇: 利用xampp将apache和tomcat整合
volca
博客等级 码龄24年 0粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值