浅析php代码的规范艺术,适用其他语言

 更新时间:2016年11月25日 17:05  点击:2253
优秀的程序员,写出来的代码不但具有高效的运行速度,也同时具有很强的可读性。下面我们就php来讲讲程序代码的规范性,使程序员具体良好的编程习惯,也让项目具有更好的可维护性。

本文以PHP语言为例,介绍一些良好的编程习惯,希望能够对你有所帮助。

1. 规划代码结构

优秀的PHP代码应该有清晰的结构。PHP面向对象的特性允许程序员将应用程序分解为函数或方法。如果代码晦涩难懂,你也可以添加注释,使代码的功能一目了然。编码时应尽量将前端代码(HTML/CSS/JavaScript)与应用程序的服务端规则分开,或者你可以使用遵循MVC模式的PHP框架来构建你的应用程序。

2. 编码风格统一

优秀的PHP代码应该具备统一的风格。比如,为变量和函数制定统一的命名规则,为循环任务(比如数据库存取、错误处理)制定统一的接入标准,或者保持有规律的代码缩进,这些编码习惯都可以让别人阅读代码更加轻松。

3. 可移植性

优秀的PHP代码应该具有可移植性。程序员应学会运用PHP现有的特性(比如魔术引号和短标签等),应该了解产品需求,适应PHP的特点,保证写出的PHP代码具有可移植性和跨平台性。

4. 代码安全性

优秀的PHP代码应该具有安全性。PHP5具有卓越的特性和灵活性,但应用程序的安全往往掌握在程序员的手中。作为专业的PHP开发人员,应该对安全漏洞有一些深入了解,常见的安全漏洞有跨站脚本攻击(XSS)、跨站请求伪造(CSRF)、代码注入漏洞和字符编码漏洞等。使用PHP中的特定功能和函数(比如mysql_real_escape_string等)可以帮助程序员写出安全的代码。

5. 添加注释

代码注释是代码中的重要组成部分,它解释了函数运行的目的,这种注释会在代码以后的维护中提供非常有用的帮助。

6. 避免简写标记

应使用完整的起始标记,不推荐使用简写的起始标记。

7. 用单引号代替双引号

由于PHP会对双引号中的内容进行变量搜索,为了避免这种搜索带来的性能影响,程序员应该使用单引号引用字符串。

8. 转义输出

应该在htmlspecialchars函数中使用ENT_QUOTES参数,保证单引号(')也可以被转义。尽管没有规定必须这样做,但这是一个好习惯。

9. 使用逗号隔开字符串输出

字符串连接符(.)可以将单一的字符串传递给echo语句进行输出,与之相比,逗号可以实现echo语句中字符串的分别输出,这对PHP来说是一个性能改善。

10. 在输出前检查传递值

应该记得在输出前检查$_GET['query'] 的传递值。使用isset函数或是empty函数可以检查变量值是否为空。

以下是我们从官方网站整理出来Drupal学习中的所需掌握的技术点,希望刚入或者想入Drupal有所参数,也可以少起弯路。

Drupal开发中需要那些技能呢?来,先看一下大屏幕(下图)

Drupal Skill Sets

按照上面的图示,大概列了一个表:

技术方向 详细说明
社区人员 Drupal.org账号、发帖、组织和参加线下聚会、QQ群等
内容编辑 网站的评论、内容、自动发布、审核等技能。menus, users, blocks, front page settings
站点配置人员 普通设置:网站的 menus, users, blocks, 首页、权限等配置。
高级设置:Views,以及重要的模块,如Panels, Skinnr, Context, Simple Views。
一般站长 基本技能:安装Drupal, 配置fields, 创建简单的views, 安装和设置一些模块,如:References, Scheduler and Automatic Nodetitles等等。
高级技能:Views配置,一些高级模块的使用,如:Page manager, Rules, Organic Groups, Commerce以及权限控制模块等。
白金级别:Drupal多站点的安装,Drupal设置的导出、导入,如features。
代码开发  基本模块的开发,能写Views plugin/handlers,理解Drupal的运行逻辑系统,能开发Drupal的权限、模版、数据操作等模块,并且能对Drupal的核心进行hack。(对Hack!)
前端开发 基本级别:主题创建、子主题创建、基本的CSS修改、模版文件修改等。
高级级别: 相应试设计, Grid布局, jQuery等。
白金级别: js、ajax、ahah、HTML5、app等。
服务器管理 基础级别:服务器的安装、apache、mysql、php,以及文件权限设置等安装运维。
中等级别: 服务器的持续集成,自动化测试、网站备份(如:运用Drupal模块的备份)等。
高级级别: 网站安全、模块升级、代码安全(svn、git)、Drupal文件的备份等等
seo/seo.html" target="_blank">网站优化: 内存使用、内存泄漏、CPU利用率、数据库慢查询,反向代理、缓存、负载均衡等等。
其他相关 需求管理(分析、整理、文档),项目管理(管理项目、Roadmap、管理平台的使用),任务划分,交互设计、市场调查、SEO策略、内容策略等等

以上是参考Drupal.org上的内容,大概列举的,不过我们可以看出,不同的方向所需要的技能还是不一样的,本站的博客关注网站后端一些,也就是从服务器、数据库、性能甚至SEO、市场策略,前端、模块安装相对比较少。

可见,我们要学习更多的技能,才能开发出一个很拽的网站

在用wordpress进行二次开发的时候,会在它的模板里面看到一些奇怪的php语法,这些语法在php里面不常用。对于一部分PHPer没见过的代码?难道是那些博客的开发者自己搞的仿PHP的模板语言?其实这些都是PHP的语法,只不过不常用而已,这些都是PHP流程控制的替代语法。

这里就就给大家详细说一下PHP流程控制的替代语法。什么是替代语法?
简单的说就是一些语法的另类写法。
PHP中那些语法有替代语法?
流程控制(包括if,while,foreach,switch)这几个语句有替代语法。
替代语法的基本形式:
左花括号({)换成冒号(:),把右花括号(})分别换成 endif;,endwhile;,endfor;,endforeach; 以及 endswitch;
举个例子吧:

举个例子吧:
<?php if ($a<0): ?>
是负数拉
<?php endif; ?>
上面的语句等同于
<?php if ($a<0){ ?>
是负数拉
<?php } ?>

是负数拉

为什么纯PHP代码里面几乎看不到?

这些语法有点不符合C家族的传统有点另类,大家不大习惯于这种语法,而且不是很方便
大家都不习惯,而且这么另类要他有什么用?蛋疼吗?
存在就是合理,它自有它的用处,这些语法能发挥的地方是在PHP和HTML混合页面的代码里面。好处如下:
1.使HTML和PHP混合页面代码更加干净整齐。
有代码洁癖的朋友最惧怕的就是乱七八糟的混合代码,有了这些没有花括号的替代语法,各位爱干净的朋友开心到尿震。
2.流程控制逻辑更清晰,代码更容易阅读
要改别人的PHP和HTML混合代码,打开发现,我擦!太TMD垃圾了!如果用替代语法,我想再垃圾的程序开发人员也不至于写的太乱吧。
3.一些从ASP等其他类basic语言家族转来的朋友,会更容易使用PHP。
讲半天没用的,捞点干的行不?这东西怎么用?
根据之前描述的使用方法,if语句的替代语法使用如下:

<?php if ($a == 5): ?>
<div>等于5</div>
<?php elseif ($a == 6): ?>
<div>等于5</div>
<?php else: ?>
<div>不是5就是6</div>
<?php endif; ?>

while替代语法:

<?php while (expr): ?>
<li>循环点什么</li>
<?php endwhile; ?>

for替代语法:

<?php for (expr1; expr2; expr3): ?>
<li>循环点什么</li>
<?php endfor; ?>

foreach替代语法:

<?php foreach (expr1): ?>
<li>循环点什么</li>
<?php endforeach; ?>

switch替代语法:

<?php
switch ($i):
case 0:
echo “i equals 0″;
break;
case 1:
echo “i equals 1″;
break;
case 2:
echo “i equals 2″;
break;
default:
echo “i is not equal to 0, 1 or 2″;
endswitch;
?>

 

在php中implode() 函数把数组元素组合为一个字符串了,与explode函数正好是反正,下面来看几个implode函数示例。

语法

implode(separator,array) // array为数组,separator为分切符。

例子

 

 代码如下 复制代码
//链接搜索条件
$wheresql = implode(' AND ', $wherearr); //链接搜索条件
 function simplode($ids) {
return "'".implode("','", $ids)."'";
}
   $itemidarr = array(); //初始化itemidarr数组
  if(empty($_POST['item'])) {  //判断提交过来的是否存在待操作的记录,如果没有,则显示提示信息并退出
   showmessage('space_no_item');
  }
  $itemidstr = simplode($_POST['item']); //用逗号链接所有的操作ID
  //对提交的数据进行检查

实例代码:

 代码如下 复制代码
$catidarr = array();
if(!empty($t1)) $catidarr[] = '\''.$t1.'\'';
if(!empty($t2)) $catidarr[] = '\''.$t2.'\'';
if(!empty($t3)) $catidarr[] = '\''.$t3.'\'';
$catidstr = implode(' , ', $catidarr); //用逗号链接所有的操作ID

SQL语句示例:

 代码如下 复制代码
SELECT uid, name, namestatus FROM ".tname('space')." WHERE uid IN (".simplode($uids).")

例子,批量删除数据

SQL:$SQL="delete from `doing` where id in ('1,2,3,4')";

数据用逗号隔开。

 代码如下 复制代码

表单:<form action="?action=doing" method="post">

<input name="ID_Dele[]" type="checkbox" id="ID_Dele[]" value="1"/>

<input name="ID_Dele[]" type="checkbox" id="ID_Dele[]" value="2"/>

<input name="ID_Dele[]" type="checkbox" id="ID_Dele[]" value="3"/>

<input name="ID_Dele[]" type="checkbox" id="ID_Dele[]" value="4"/>

<input type="submit"/>

</form>

好$ID_Dele=$_POST['ID_Dele']将会是一个数组,虽然说PHP是弱类型的,但这里可没ASP弱。ASP可以直接:

SQL="delete from [doing] where id in ('"&ID_Dele&"')"进行删除。但PHP不能把$ID_Dele直接放进去。因为$ID_Dele可不是'1,2,3,4'哦,因为$ID_Dele是一个数组,具有键和值。

好,PHP中也不难,刚好有个函数:implode(),对了。同split()explode()功能刚好相反的一个函数,后两者是用某字符(比如逗号)分割的,而前者则可以拼接为字符串。

因此:

 代码如下 复制代码

$ID_Dele= implode(",",$_POST['ID_Dele']);

$SQL="delete from `doing` where id in ($ID_Dele)";

php中获取当天的时间戳可以用mktime,date,today几个函数来相互操作来实现了,下面有简单的几个例子

今天0点表示,方法一:

$today = mktime(0, 0, 0, date('m', time()), date('d', time()), date('Y', time()));

方法二:

strtotime(date('Y-m-d', time());

方法三:

strtotime("today");

如果要获取当时间戳只需要使用$time = time() 即可。

[!--infotagslink--]

相关文章

  • 源码分析系列之json_encode()如何转化一个对象

    这篇文章主要介绍了源码分析系列之json_encode()如何转化一个对象,对json_encode()感兴趣的同学,可以参考下...2021-04-22
  • 不打开网页直接查看网站的源代码

      有一种方法,可以不打开网站而直接查看到这个网站的源代码..   这样可以有效地防止误入恶意网站...   在浏览器地址栏输入:   view-source:http://...2016-09-20
  • php中去除文字内容中所有html代码

    PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。...2013-08-02
  • php 调用goolge地图代码

    <?php require('path.inc.php'); header('content-Type: text/html; charset=utf-8'); $borough_id = intval($_GET['id']); if(!$borough_id){ echo ' ...2016-11-25
  • JS基于Mootools实现的个性菜单效果代码

    本文实例讲述了JS基于Mootools实现的个性菜单效果代码。分享给大家供大家参考,具体如下:这里演示基于Mootools做的带动画的垂直型菜单,是一个初学者写的,用来学习Mootools的使用有帮助,下载时请注意要将外部引用的mootools...2015-10-23
  • JS+CSS实现分类动态选择及移动功能效果代码

    本文实例讲述了JS+CSS实现分类动态选择及移动功能效果代码。分享给大家供大家参考,具体如下:这是一个类似选项卡功能的选择插件,与普通的TAb区别是加入了动画效果,多用于商品类网站,用作商品分类功能,不过其它网站也可以用,...2015-10-21
  • JS实现自定义简单网页软键盘效果代码

    本文实例讲述了JS实现自定义简单网页软键盘效果。分享给大家供大家参考,具体如下:这是一款自定义的简单点的网页软键盘,没有使用任何控件,仅是为了练习JavaScript编写水平,安全性方面没有过多考虑,有顾虑的可以不用,目的是学...2015-11-08
  • php 取除连续空格与换行代码

    php 取除连续空格与换行代码,这些我们都用到str_replace与正则函数 第一种: $content=str_replace("n","",$content); echo $content; 第二种: $content=preg_replac...2016-11-25
  • php简单用户登陆程序代码

    php简单用户登陆程序代码 这些教程很对初学者来讲是很有用的哦,这款就下面这一点点代码了哦。 <center> <p>&nbsp;</p> <p>&nbsp;</p> <form name="form1...2016-11-25
  • PHP实现清除wordpress里恶意代码

    公司一些wordpress网站由于下载的插件存在恶意代码,导致整个服务器所有网站PHP文件都存在恶意代码,就写了个简单的脚本清除。恶意代码示例...2015-10-23
  • JS实现双击屏幕滚动效果代码

    本文实例讲述了JS实现双击屏幕滚动效果代码。分享给大家供大家参考,具体如下:这里演示双击滚屏效果代码的实现方法,不知道有觉得有用处的没,现在网上还有很多还在用这个特效的呢,代码分享给大家吧。运行效果截图如下:在线演...2015-10-30
  • js识别uc浏览器的代码

    其实挺简单的就是if(navigator.userAgent.indexOf('UCBrowser') > -1) {alert("uc浏览器");}else{//不是uc浏览器执行的操作}如果想测试某个浏览器的特征可以通过如下方法获取JS获取浏览器信息 浏览器代码名称:navigator...2015-11-08
  • index.php怎么打开?如何打开index.php?

    index.php怎么打开?初学者可能不知道如何打开index.php,不会的同学可以参考一下本篇教程 打开编辑:右键->打开方式->经文本方式打开打开运行:首先你要有个支持运行PH...2017-07-06
  • JS日期加减,日期运算代码

    一、日期减去天数等于第二个日期function cc(dd,dadd){//可以加上错误处理var a = new Date(dd)a = a.valueOf()a = a - dadd * 24 * 60 * 60 * 1000a = new Date(a)alert(a.getFullYear() + "年" + (a.getMonth() +...2015-11-08
  • PHP开发微信支付的代码分享

    微信支付,即便交了保证金,你还是处理测试阶段,不能正式发布。必须到你通过程序测试提交订单、发货通知等数据到微信的系统中,才能申请发布。然后,因为在微信中是通过JS方式调用API,必须在微信后台设置支付授权目录,而且要到...2014-05-31
  • PHP常用的小程序代码段

    本文实例讲述了PHP常用的小程序代码段。分享给大家供大家参考,具体如下:1.计算两个时间的相差几天$startdate=strtotime("2009-12-09");$enddate=strtotime("2009-12-05");上面的php时间日期函数strtotime已经把字符串...2015-11-24
  • php怎么用拼音 简单的php中文转拼音的实现代码

    小编分享了一段简单的php中文转拼音的实现代码,代码简单易懂,适合初学php的同学参考学习。 代码如下 复制代码 <?phpfunction Pinyin($_String...2017-07-06
  • PHP中func_get_args(),func_get_arg(),func_num_args()的区别

    复制代码 代码如下:<?php function jb51(){ print_r(func_get_args()); echo "<br>"; echo func_get_arg(1); echo "<br>"; echo func_num_args(); } jb51("www","j...2013-10-04
  • php导出csv格式数据并将数字转换成文本的思路以及代码分享

    php导出csv格式数据实现:先定义一个字符串 存储内容,例如 $exportdata = '规则111,规则222,审222,规222,服2222,规则1,规则2,规则3,匹配字符,设置时间,有效期'."/n";然后对需要保存csv的数组进行foreach循环,例如复制代...2014-06-07
  • ecshop商品无限级分类代码

    ecshop商品无限级分类代码 function cat_options($spec_cat_id, $arr) { static $cat_options = array(); if (isset($cat_options[$spec_cat_id]))...2016-11-25