php 编程规范变量赋值方法

 更新时间:2016年11月25日 15:14  点击:1521
下面我们为php初学者讲一篇关于变量赋值可注意的事项吧。

变量赋值

<?php
 
  $a =1;
  $b =1;
  $c =2;
  $d =2;
 if ($a == $b && $c == $d) die('error');// 错误
  
 if (($a == $b) && ($c == $d)) die('yes');// 正确
 
?>

不要使用内嵌(embedded)赋值运算符试图提高运行时的效率,这是编译器的工作。例如:
$d = ($a = $b + $c) + $r; // 错误

应该写成
$a = $b + $c;
$d = $a + $r;

避免在一个语句中给多个变量赋相同的值。它很难读懂。例如:
$fooBar.fChar = $barFoo.lchar = 'c'; // 错误

不要将赋值运算符用在容易与相等关系运算符混淆的地方。例如:
if ($c++ = $d++) { // 错误
  ...
}

应该写成
if (($c++ = $d++) != 0) {
  ...
}

 

php代码规范化编程实现

代码范例

/*
 * @(#)Cngift.php 1.82 03/06/25
 *
 * 开花石头编写的示例文档
 * 将对编码规范做简单的示范
 *
 */


require( “db.php” );

/**
 * 示范用类
 *
 * @version 1.82 03.06.25
 * @author 开花石头
 */
class Blah extends SomeClass {
  /* 这个类运行时的注释写在这里 */

  /** 关于变量的注释写在这里 */
  static int $classVar1;

  /**
   * 对变量编写的多行注释写在这里
   */
  static string classVar2;

  /** 变量的文档注释 */
  int instanceVar1;

  /** 变量的文档注释 */
  int[] instanceVar3;

  /**
   * 构造函数的注释
   */
  function Blah() {
    // ...在这里执行...
  }

  /**
   * ...函数的文档注释...
   */
  function doSomething() {
    // ...在这里执行...
  }

  /**
   * ...方法的注释文档..
   * 多行注释
   */
  public void doSomethingElse(Object someParam) {
    // ...在这里执行...
  }
}

 

关于类申明我们以前有讲过,这次主要是针对php程序员编程的规范化来讲讲吧。

类的声明

当编写类时,应该遵守以下格式规则:

- 在方法名与其参数列表之前的左括号"("间不要有空格
- 左大括号"{"位于声明语句同行的末尾
- 右大括号"}"另起一行,与相应的声明语句对齐,除非是一个空语句,"}"应紧跟在"{"之后

class Sample extends Object {
  int $ivar1;
  int $ivar2;

function Sample(int $i, int $j) {
  ivar$1 = $i;
  ivar$2 = $j;
}

function emptyMethod() {}

  ...
}

- 方法与方法之间以空行分隔

布局

只在代码块的开始处声明变量。(一个块是指任何被包含在大括号"{"和"}"中间的代码。)不要在首次用到该变量时才声明之。这会把注意力不集中的程序员搞糊涂,同时会妨碍代码在该作用域内的可移植性。


function myMethod() {
  int $int1 = 0; // 方法块的开始

  if ($condition) {
    int $int2 = 0; // "if"块的开始
    ...
  }
}


该规则的一个例外是for循环的索引变量


for (int $i = 0; i < $maxLoops; $i++) { ... }


避免声明的局部变量覆盖上一级声明的变量。例如,不要在内部代码块中声明相同的变量名:


int $count;
...
function myMethod() {
  if ($condition) {
    int $count = 0; // 避免这种声明
    ...
  }
 ...
}

不管什么语言在变量申明或其它事情都会有多种选择的,但是它们之产有微小的差别,下面我们就拿变量申明来说说吧。

int $level; // 缩进的程度
int $size; // 由制表符决定


要优于,

int $level, $size;

不要将不同类型变量的声明放在同一行,例如:


int $foo, $fooarray[]; //错误


注意:上面的例子中,在类型和标识符之间放了一个空格,另一种被允许的替代方式是使用制表符:


int $level; // 缩进的程度
int $size; // 由制表符决定
$currentEntry; // 通常选择制表符作为缩进的标准

本文章提供了5种注释方法:块注释,单行注释,尾端注释,行末注释,文档注释哦,下面我们就一一来看看吧。

短注释可以显示在一行内,并与其后的代码具有一样的缩进层级。如果一个注释不能在一行内写完,就该采用块注释。单行注释之前应该有一个空行。以下是一个代码中单行注释的例子:


if (condition) {

  /* 以下代码运行的条件 */
  ...
}

尾端注释

if ($a == 2) {
  return TRUE; /* 对单一条件的说明 */
} else {
  return isPrime($a); /* 其余的条件 */
}


/*
 * 这里是块注释
*/


块注释可以以/*-开头,这样indent(1)就可以将之识别为一个代码块的开始,而不会重排它。


/*-
 * 如果想被忽略,可是使用特别格式的块注释
 *
 * one
 *   two
 *     three
 */


注意:如果你不使用indent(1),就不必在代码中使用/*-,或为他人可能对你的代码运行indent(1)作让步。

4.4 行末注释

注释界定符"//",可以注释掉整行或者一行中的一部分。它一般不用于连续多行的注释文本;然而,它可以用来注释掉连续多行的代码段。以下是所有三种风格的例子:


if ($foo > 1) {

  // 第二种用法.
  ...
}
else {
  return false; // 说明返回值的原因
}

//if ($bar > 1) {
//
//  // 第三种用法
//  ...
//}
//else {
  // return false;
//}

档注释

/**
 * 说明这个类的一些 ...
*/

[!--infotagslink--]

相关文章

  • PHP成员变量获取对比(类成员变量)

    下面本文章来给大家介绍在php中成员变量的一些对比了,文章举了四个例子在这例子中分别对不同成员变量进行测试与获取操作,下面一起来看看。 有如下4个代码示例,你认...2016-11-25
  • php 中file_get_contents超时问题的解决方法

    file_get_contents超时我知道最多的原因就是你机器访问远程机器过慢,导致php脚本超时了,但也有其它很多原因,下面我来总结file_get_contents超时问题的解决方法总结。...2016-11-25
  • php抓取网站图片并保存的实现方法

    php如何实现抓取网页图片,相较于手动的粘贴复制,使用小程序要方便快捷多了,喜欢编程的人总会喜欢制作一些简单有用的小软件,最近就参考了网上一个php抓取图片代码,封装了一个php远程抓取图片的类,测试了一下,效果还不错分享...2015-10-30
  • HTTP 408错误是什么 HTTP 408错误解决方法

    相信很多站长都遇到过这样一个问题,访问页面时出现408错误,下面一聚教程网将为大家介绍408错误出现的原因以及408错误的解决办法。 HTTP 408错误出现原因: HTT...2017-01-22
  • C#变量命名规则小结

    本文主要介绍了C#变量命名规则小结,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-09
  • Android子控件超出父控件的范围显示出来方法

    下面我们来看一篇关于Android子控件超出父控件的范围显示出来方法,希望这篇文章能够帮助到各位朋友,有碰到此问题的朋友可以进来看看哦。 <RelativeLayout xmlns:an...2016-10-02
  • R语言 如何删除指定变量或对象

    这篇文章主要介绍了R语言删除指定变量或对象的操作方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-06
  • ps把文字背景变透明的操作方法

    ps软件是现在非常受大家喜欢的一款软件,有着非常不错的使用功能。这次文章就给大家介绍下ps把文字背景变透明的操作方法,喜欢的一起来看看。 1、使用Photoshop软件...2017-07-06
  • intellij idea快速查看当前类中的所有方法(推荐)

    这篇文章主要介绍了intellij idea快速查看当前类中的所有方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-09-02
  • Mysql select语句设置默认值的方法

    1.在没有设置默认值的情况下: 复制代码 代码如下:SELECT userinfo.id, user_name, role, adm_regionid, region_name , create_timeFROM userinfoLEFT JOIN region ON userinfo.adm_regionid = region.id 结果:...2014-05-31
  • js导出table数据到excel即导出为EXCEL文档的方法

    复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta ht...2013-10-13
  • mysql 批量更新与批量更新多条记录的不同值实现方法

    批量更新mysql更新语句很简单,更新一条数据的某个字段,一般这样写:复制代码 代码如下:UPDATE mytable SET myfield = 'value' WHERE other_field = 'other_value';如果更新同一字段为同一个值,mysql也很简单,修改下where即...2013-10-04
  • ps怎么制作倒影 ps设计倒影的方法

    ps软件是一款非常不错的图片处理软件,有着非常不错的使用效果。这次文章要给大家介绍的是ps怎么制作倒影,一起来看看设计倒影的方法。 用ps怎么做倒影最终效果&#819...2017-07-06
  • js基础知识(公有方法、私有方法、特权方法)

    本文涉及的主题虽然很基础,在许多人看来属于小伎俩,但在JavaScript基础知识中属于一个综合性的话题。这里会涉及到对象属性的封装、原型、构造函数、闭包以及立即执行表达式等知识。公有方法 公有方法就是能被外部访问...2015-11-08
  • 解决vue的router组件component在import时不能使用变量问题

    这篇文章主要介绍了解决vue的router组件component在import时不能使用变量问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-27
  • 安卓手机wifi打不开修复教程,安卓手机wifi打不开解决方法

    手机wifi打不开?让小编来告诉你如何解决。还不知道的朋友快来看看。 手机wifi是现在生活中最常用的手机功能,但是遇到手机wifi打不开的情况该怎么办呢?如果手机wifi...2016-12-21
  • PHP 验证码不显示只有一个小红叉的解决方法

    最近想自学PHP ,做了个验证码,但不知道怎么搞的,总出现一个如下图的小红叉,但验证码就是显示不出来,原因如下 未修改之前,出现如下错误; (1)修改步骤如下,原因如下,原因是apache权限没开, (2)点击打开php.int., 搜索extension=ph...2013-10-04
  • c#中分割字符串的几种方法

    单个字符分割 string s="abcdeabcdeabcde"; string[] sArray=s.Split('c'); foreach(string i in sArray) Console.WriteLine(i.ToString()); 输出下面的结果: ab de...2020-06-25
  • js控制页面控件隐藏显示的两种方法介绍

    javascript控制页面控件隐藏显示的两种方法,方法的不同之处在于控件隐藏后是否还在页面上占位 方法一: 复制代码 代码如下: document.all["panelsms"].style.visibility="hidden"; document.all["panelsms"].style.visi...2013-10-13
  • 连接MySql速度慢的解决方法(skip-name-resolve)

    最近在Linux服务器上安装MySql5后,本地使用客户端连MySql速度超慢,本地程序连接也超慢。 解决方法:在配置文件my.cnf的[mysqld]下加入skip-name-resolve。原因是默认安装的MySql开启了DNS的反向解析。如果禁用的话就不能...2015-10-21