PHP 语言结构(Language constructs)和函数的区别

 相信大家经常看到对比一些PHP应用中,说用isset() 替换 strlen()issetstrlen执行速度快等。

例子:

         if ( isset($username[5]) ) {

                 // The username is at least six characters long.

}

原因是isset是语言结构,而strlen是一个函数。那什么是语言结构呢?它和函数有什么不同吗?

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

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

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

2、  语言结构为什么比函数快

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

什么语言结构比函数快了。

3、  语言结构和函数的不同

l          语言结构比对应功能的函数快

l          语言结构在错误处理上比较鲁棒,由于是语言关键词,所以不具备再处理的环节

l          语言结构不能在配置项(php.ini)中禁用,函数则可以。

l          语言结构不能被用做回调函数

4、  语言结构列表

l          echo()

l          print(),没错,这是一个语言结构

l          die()

l          isset()

l          unset()

l          include(),没有include_once()

l          require(),没有require_once()

l          array()

l          list()

l          empty()

 

5、  看看你的程序中用到了哪些?!

PHP Keywords

__halt_compiler() abstract and array() as
break callable (as of PHP 5.4) case catch class
clone const continue declare default
die() do echo else elseif
empty() enddeclare endfor endforeach endif
endswitch endwhile eval() exit() extends
final for foreach function global
goto (as of PHP 5.3) if implements include include_once
instanceof insteadof (as of PHP 5.4) interface isset() list()
namespace (as of PHP 5.3) new or print private
protected public require require_once return
static switch throw trait (as of PHP 5.4) try
unset() use var while xor

Compile-time constants
__CLASS__ __DIR__ (as of PHP 5.3) __FILE__ __FUNCTION__ __LINE__ __METHOD__ __NAMESPACE__ (as of PHP 5.3) __TRAIT__ (as of PHP 5.4)

http://php.net/manual/en/reserved.keywords.php

Suhosin软件。

这个软件不仅可以设置禁用eval() 还有需要安全方法措施。

参考:

http://www.hardened-php.net/suhosin/configuration.html#suhosin.executor.disable_eval

转载于:https://my.oschina.net/mickelfeng/blog/126266

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值