多数大学生出来选择的工作和专业无关
首页 > 专业知识

PHP经常容易记乱的知识

时间:2018-02-05 17:04:59 [来源]:郑州PHP培训学校

   PHP经常容易记乱的知识

  1.echo和print的区别
  PHP中echo和print的功能基本相同(输出),但是两者之间还是有细微差别的。echo输出后没有返回值,但print有返回值,当其执行失败时返回flase。因此可以作为一个普通函数来使用,例如执行下面的代码后变量$r的值将为1。
  $r = print "Hello World";
  这意味着print可用在一些复杂的表达式中,而echo则不行。但是,因为echo语句不要求返回任何数值,所已在代码中echo语句的运行效率要略微快于print语句。
  2.include与require的区别
  include()与require()的功能也基本相同(包含),但在用法上也有一些不同,include()是有条件包含函数,而require()则是无条件包含函数。例如在下面代码中,如果变量$a为真,则将包含文件a.php:
  if($a){
  include("a.php");
  }
  而require()则和include()不同,不管$a取何值,下面的代码将把文件a.php包含进文件里:
  if($a){
  require("a.php");
  }
  在错误处理方面,使用include语句,如果发生包含错误,程序将跳过include语句,虽然会显示错误信息但是程序还是会继续执行!但requre却会给你来个致命错误。
  当然,从字面意思上我们也可以理解七分:requre是很强硬的请求、要求的意思。
  3.require_once()和include_once()语句
  题外话了,因为长的像,简单require_once()和include_once()语句分别对应于require()和include()语句。require_once() 和include_once()语句主要用于需要包含多个文件时,可以有效地避免把同一段代码包含进去而出现函数或变量重复定义的错误。
  4.空字符串('')和NULL的区别
  PHP中空字符串和NULL都是以值为0存储的,但是他们的类型并不一样,你可以试一下echo gettype('');和echo gettype(NULL);你会发现他们打印出来的分别是string和NULL,当然还有0也容易混淆,你可以试试echo gettype(0);打印一下类型,会发现0的类型是integer(整型),可见字符串('')、NULL和0是“等值”但不等类型。
  5.isset和 empty的区别
  从字面意思上我们就可以明白:empty是判断一个变量是否为“空”,而isset 则是判断一个变量是否已经设置。但是这里有一点绝对要注意起来:当一个变量值为0,empty 认为这个变量同等于空,即相当于没有设置。比如当我们检测$id 变量的时候,当$id=0 ,用empty和isset来检测变量$id是否已经配置,两都将返回不同的值:empty 认为没有配置,isset 则能够取得 $id 的值,看下边例子:
  $id=0;
  empty($id)?print "我是空的":print "我是$id ."; //结果:我是空的!isset($id)?print "我是空的":print "我是$id .";//结果:我是0
 
    从几个方面全面解析PHP的糟糕设计
  我的脾气古怪. 我会抱怨很多东西. 这个星球上大多数技术我都不喜欢.
  PHP不仅使用起来尴尬, 还有要嘛我想要的不适合, 要嘛不是最令人满意, 要嘛违背我的信仰. 我可以告诉你关于一门语言, 所有我想避免的好方式, 所有我喜欢的坏方式. 来吧, 问吧! 谈话会很有趣!
  php是唯一的例外. 几乎php抽象的所有东西都是支离破碎的. 包括语言, 框架, 整个生态系统都一塌糊涂. 我几乎不能单独列出咒骂的事情, 因为它全身都坏了. 每次我打算编辑一堆杂乱如麻的php抱怨清单的时候, 我都被一些琐事打乱, 越深入就越会发现其它令人震惊的事情.
  php让人难堪. 它是如此的破碎, 但那些被培训的业余爱好者, 却对它称赞不已. php在做一些徽不足道的挽回措施, 但我选择忘记它.
  不过我得让我的系统摆脱这些东西, 也就这样了, 这是最后一次尝试.
  打个比喻
  我只是随口和 Mel 抱怨下, 而她却坚决让我发表出来.
  我甚至说不出来PHP到底怎么了, 因为 -- 还好. 想想你有一个, 嗯, 工具箱吧. 一堆工具. 看起来还好, 有标准的东西.
  你拔除螺丝钉, 它怪异的有三个头. OK, 好吧, 这对你不太有用, 但你猜迟早有天会有用.
  你拿出榔头, 被震住了, 两边都有是尖爪. 但它仍然能用, 我的意思是, 你可以用两头的中部斜着敲.
  你拿出老虎钳, 但它们没有锯齿面. 表面平而光滑. 这没多大用, 但依然能用, 没什么.
  你可以继续. 工具箱的东西都是怪异和琢磨不定的, 但又不能说毫无价值. 整体看没什么大问题; 它的工具都齐全.
  现在, 想象有很多使用这些工具的木匠, 它们和你说:"这些工具有什么问题呢? 我们都用过, 它们工作都很好啊!". 工匠们给你展示他们建的房子,每个门都是五边形的而屋顶是癫倒的. 你敲前门, 它向内倒榻了, 而他们却抱怨你打破了他们的门.
  这就是PHP的问题.
  立场
  我认为下面的特质对于一门语言的生产力和可用性是重要的, 而PHP在大范围破坏它们. 如果你不同意这些, 好吧, 我无法想像, 我们永远不会达成一致.
  >> 一门语言必须是可预见的. 它是將人类的思想反映给计算机执行的媒介, 因此它的关键是, 人类对程序的理解实际要正确.
  >> 语言必须一致. 相似的东西就要看起来相似, 不同的就是不同. 学习了语言的部分知识, 就应能很容易理解剩下的部分.
  >> 语言必须简洁. 新语言应该减少继承旧语言的不好的形式. (我们也可以写机器码.) 新语言当然应努力避免织入新的特有的形式.
  >> 语言必须是可靠的. 语言是解决问题的工具; 应尽量避免引入新问题. 任何"陷阱"都会大量的分散注意力.
  >> 语言必须是可调试的. 当出错的时候, 程序员必须修正它, 我们需要获得我们想要的帮助.
  我的立场是:
  >> PHP到处处充满惊奇: mysql_real_escape_string, E_ACTUALLY_ALL>> PHP不一致: strpos, str_rot13
  >> PHP需要特别形式: error-checking around C API calls, ===>> PHP古怪: ==. for($foo as &$bar)
  >> PHP晦涩: 默认无栈跟踪或fatals, 复杂的错误报告我不能就单个问题解释为什么它归为这些类, 否则將会没完没了. 我相信读者自己会思考.
 
  PHP源码已迁移至GitHub
  据PHP官方消息,PHP源代码已经从Subversion迁移到了Git,源码也托管在GitHub,这意味着PHP源码的维护将更加容易,同时也方便了外部贡献者创建补丁和合并代码。
  现在PHP用户可以从GitHub镜像中克隆或fork源码,另外,还支持贡献者通过GitHub进行pull requests(申请代码合并)。
  未来PHP版本将由开发团队来签署,接下来几天内开发团队还将发布用来验证的GPG密钥。
  目前,PHP手册(包括翻译版本)仍然托管在Subversion上,今后也将被迁移至Git。
 

上一篇:PHP为什么优于Node.js

下一篇:PHP超时处理全面总结