php关键字 语言结构 和函数

310 阅读2分钟
原文链接: my.oschina.net

参考:blog.sina.com.cn/s/blog_4754…

1、 什么是语言结构和函数

语言结构:
    就是PHP语言的关键词,语言语法的一部分;
    它不可以被用户定义或者添加到语言扩展或者库中;
    关键字也可以有参数和返回值。

 函数: 由代码块组成的,可以复用。

 2、 语言结构为什么比函数快
     原因是在PHP中,函数都要先被PHP解析器分解成语言结构,所以函数比语言结构多了一层解析器解析。
     这样就能比较好的理解为 什么语言结构比函数快了。

 3、 语言结构和函数的不同
  • 语言结构比对应功能的函数快 
  • 语言结构在错误处理上比较鲁棒,由于是语言关键词,所以不具备再处理的环节
  • 语言结构不能在配置项(php.ini)中禁用,函数则可以。
  • 语言结构不能被用做回调函数
可是tammd在php manual中实在是误导,大家可能都知道echo 是个语言结构,好像很神秘,其实就是关键字,只是在php中有些关键字很像函数,也有 参数,甚至有返回值,可恶的PHP Manual中将类似echo的关键字的说明放到了function.XXX这种链接里面,而将关键字列表放到了附录里面,啃die啊如: www.php.net/manual/en/f…,这不明摆着说你 echo是个函数吗!!!每次面试或者高手们都会拿这些函数样的关键字 做考题,fuuuuuuccckkkk.
下面列举一下PHP5中的关键字,以及像函数的关键字

2、PHP关键字列表 

这页会给出关键字自哪个版本开始有的,比较凌乱分个类吧,关键字都是不区分大小写的 
类型 
callable (as of PHP 5.4) function static var global const

流程控制 
break switch case default try catch continue do  while 
else elseif   endfor  declare enddeclare  endforeach endif 
endswitch	endwhile  final finally (as of PHP 5.5)  
for foreach goto (as of PHP 5.3) if return  
throw yield (as of PHP 5.5) use

逻辑 
and   xor  or

面向对象 
abstract  class as clone  extends   implements instanceof  
insteadof (as of PHP 5.4)  interface
namespace (as of PHP 5.3) new private protected 
public trait (as of PHP 5.4)

令人迷糊的函数式关键字  
__halt_compiler()
array()
die()
empty()
echo()
eval()
exit()
isset()
list()
print()
unset()
include() 
include_once()
require()
require_once()

还有很多预定义的常量

__CLASS__	__DIR__ (as of PHP 5.3)	__FILE__	__FUNCTION__	__LINE__	__METHOD__
__NAMESPACE__ (as of PHP 5.3)	__TRAIT__ (as of PHP 5.4)

使用function_exist('func_name'), 如果传入 关键字 则也返回FALSE的

狗血的echo

$s = '12345';//字符串就是char数组,php的数组本质上是带双向链表的hashtable
$s[$s[1]] = '2' ;
echo $s . "<br>";

echo  1+2+"3+4+5";   算术运算符从左至右 解析 数字,直到碰到非数字字符

echo "<br>";

echo 1>>0;

echo 2>>1;右移除2

echo 3<<2;左移乘2

echo "<br>";

echo true;  1
echo false; 不显示任何东西

echo function_exists('include_once');
结果:
12245
6
1112
1
echo "true";
echo "false";

echo 'true';
echo 'false';
结果:
true
false
true
false


再次重申 echo FALSE;什么也不输出