清晰易懂的大神原著
declare属于流程控制,只认识ticks和encoding,encoding很好理解(当前代码块的编码方式),这里主要说ticks:
declare(ticks=N),即执行N条低级语句是发生的事件,由register_tick_function()
指定执行,参数为字符串函数名(不要()的那种,‘func’)或者对象(array(&$obj,method),true)
statement是指:
(1) 简单语句:空语句(就一个;号),return,break,continue,throw,goto,global,static,unset,echo, 内置的HTML文本,分号结束的表达式等均算一个语句。
(2)复合语句:完整的if/elseif,while,do…while,for,foreach,switch,try…catch等算一个语句。
(3) 语句块:{} 括出来的语句块。
(4) 最后特别的:declare块本身也算一个语句(按道理declare块也算是复合语句,但此处特意将其独立出来)。
所有的statement, function_declare_statement, class_declare_statement就构成了所谓的低级语句(low-level statement)。
declare(ticks=1);//declare本身,1
function tisk_declare(){//函数声明,2
echo "this is declare<br>";//测试好一阵发现函数内部的简单语句是不会触发tick的
}
register_tick_function('tisk_declare');
$a=1;//分号结束表达式,3
if($a>0){
$a+=2;
echo $a;//echo,4
}//复合语句if,5,复合语句是在其结束时触发
class D{}//class_declare_statement类声明或者接口,6