下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

PHP学习:实战经验丰富的PHP开发者分享的经验

作者:在线学习平台     来源: www.kokojia.com点击数:802发布时间: 2015-08-11 10:14:25

标签: php学习php视频教程php入门教程

大神带你学编程,欢迎选课

RIA,说到PHP,让我想起了一个电影《社交网络》中,Eduardo在玻璃上写下了两个式子,Mark以此算法,在寝室中用PHP编写Facemash的情景,对于php的优点我们不必费口舌,相信大多数php学习者在PHP学习过程中都有所了解,有太多的原因,使得PHP成为世界上最受欢迎的脚本语言,所以本期的PHP入门教程主要内容是一个实战经验丰富的PHP开发者给众多爱好者的一些实用经验的分享。
一、首要意识:安全
  大多数时候,我们开发的Web程序都是需要跟数据库打交道的,所以这里几乎可以说SQL注入是一个怎么也无法避免要拿出来讨论一下的问题。而且近年来像XSS和CSRF攻击也变得大行其道,使得"黑客"们貌似又有了一把把利器,而我们总是处于被动的状态。不过我们要记得是下面这两个原则:
  1. 永远不要相信用户输入的东西。(老话了,但这是真的)
  2. 将自己需要输出的数据进行转义。
  简单来说就是:filter in put , escape output
  如果你是新手,不要再使用类似以下的查询语句了:
  SELECT FROM users WHERE username = $_POST['username'] AND passWord = $_POST['password'];
  还有就是,使用PDO或MySQLi吧,不要再使用老式的mysql操作了。
  而对于,CSRF的解决方案,目前接触的都是给每一次的表单提交都设置一个token值,然后在表单提交的时候校验之即可。
二、明确地知道各个比较操作符的差别
  PHP的比较操作符,这其实可以说是一个很小的注意点,但是在某些时候真的很重要。比如说很多时候我们得考虑清楚,该用==还是===,如果你使用过strpos()这个函数,下面的代码可能会给你一个直观的感受:

实战经验丰富的PHP开发者分享的经验

  上面这段代码的运行结果其实是输出Chris is not an author,但是现实情况是,Chris & Sean真的是Author啊,怎么回这样呢?其实是这样的:Chris正好出现在Chris & Sean首位开始处,也就是0这个位置,所以substr()返回了,由于条件判断语句中bool判断,所以0作为了false处理,于是程序输出了Chris is not an author,但是在这种情况之下我们该怎么处理呢?我们其实可以这样的:

实战经验丰富的PHP开发者分享的经验

  这里的!==和!=的不同就体现出来了。
三、可以减少使用else就少使用else
  这个貌似从我一开始接触编程就有的一个想法,因为每次看到if(){}else{}就有一种这一段其实可以写得更好的感觉,因为一旦你减少了使用else关键字,你得代码会减少两行!没错,两行也是我们的追求,而且,从我的经验看,else少的代码貌似可读性更高,对我来说。
  if( this condition ) { $x = 5; } else{ $x = 10;}
  如果,在$x的默认值是10,还是下面这样写感觉比较好:
  $x = 10;
  if( this condition )
  { $x = 5; }
四、去掉不必要的括号
  这里的目的其实跟else关键字部分是一样的,我们是为了更简短的代码和更优越的可读性,对以下的情况,你都应该考虑优化代码:
  if ($gollum == 'halfling') { $height --; }
  其实是可以这样的:
  if ($gollum == 'halfling') $height --;
  你甚至可以这样:

实战经验丰富的PHP开发者分享的经验

  是不是有一种又短又清晰的感觉?
五、多用str_replace()
  在很多时候我们需要对一些字符串进行替换,在PHP中有以下几个函数可以达到这个目的:
  str_replace()
  ereg_replace()
  preg_replace()
  如果你确实是需要使用正则匹配,那就使用preg_replace(),而如果在可实现替换的情况下,请使用str_replace(),因为据不完全统计,str_replace()的效率在这三个当中是最高的。
六、使用三元运算符
  这个可能很多人都有这个感受,使用三元运算符之后,我们可以去掉一堆if else语句了,代码又短又爽。
  $host = strlen($host) > 0 ? $host : htmlentities($host);
七、使用缓存
  目前PHP热门的缓存技术可能就是Redis和Memcached了,在PHP的官方文档中,也有Memcached的使用教程,至于Redis,我最近在研究中,后续会给出一些教程,如果一切顺利的话。
八、使用框架
  框架的好处很多,可能是在性能方面有所损失外,貌似找不到不用框架的理由了,框架即可以加快你的开发速度,也可以让你在写代码的过程中撸的舒舒服服,而且想很多安全问题,你都会得到很好的解决。我这里首推Laravel,不过像Yii2 Slim Symfony都是非常棒的框架,除了Symfony没有尝过过之外,剩下的三个我都有使用经历,最后就基本是用Laravel了。不过我建议的Laravel可能不适合你,这还是得看个人喜好。
九、用isset()代替strlen()
  如果你需要在项目代码中需要根据一个字符串的长度来做条件判断,这个时候非常推荐你直接使用isset(),因为在同等条件之后,isset()的速度是strlen()的五倍左右,所以:

实战经验丰富的PHP开发者分享的经验

以上的两个条件判断都是可以达到相同的目的,但是我推荐使用的是第一种。
本期PHP学习的全部内容基本讲完了,希望大家要达成一个共识,就是学习任何一门编程技术都需要我们付出心血,都要讲求循序渐进,由浅入深。以上是PHP开发者分享的经验希望对初学者有所帮助,养成一个好习惯,学习php前需要掌握的基础知识,才能更好地运用PHP,更多是PHP视频教程可以登录课课家网络教学平台查询相关课程。

赞(20)
踩(4)
分享到:
华为认证网络工程师 HCIE直播课视频教程