当前位置:首页 > PHP教程 > php应用 > 列表

php的declare命令及用法详解

发布:smiling 来源: PHP粉丝网  添加日期:2022-05-04 08:04:12 浏览: 评论:0 

declare是用来设定一段代码的执行指令,declare结构用于全局范围,影响到其后的所有代码,今天小编给大家普及php的declare命令及用法知识,感兴趣的朋友一起看看吧。

定义

php中的declare结构用来设定一段代码的执行指令

declare用于执行3个指令:ticks,encoding,strict_types

作用域

declare结构用于全局范围,影响到其后的所有代码。

(但如果有declare结构的文件被其他文件包含,则对包含他的父文件不起作用)。

1.ticks

  1. declare(ticks=1) { 
  2. //代码 
  3. || 
  4. declare(ticks=1); 

两者相等

作用:

解释器每执行N条可计时的低级语句就会发生的时间 declare(directive=N) Tick(时钟周期)。

1.每执行一条语句就执行一次register_tisk_function()注册的函数。

  1. declare(ticks=1); 
  2. $time_start = time(); 
  3. echo "hello"
  4. function check_timeout(){ 
  5.     global $time_start
  6.     $timeout=5; 
  7.     if (time() - $time_start > $timeout){ 
  8.         exit("超时{$timeout}秒\n"); 
  9.     } 
  10. register_tick_function('check_timeout'); 
  11. $i=0; 
  12. while (1){ 
  13. //    echo $i++; 
  14.     $num =1; 

2.每执行一次低级语句会检查一次该进程是否有未处理过的信号

  1. pcntl_signal(SIGINT,function (){ 
  2.     exit("Get signal SIGINT and exit\n"); 
  3. }); 
  4. echo "Ctrl+C or run cmd:kill -SIGINT".posix_getpid()."\n"
  5. while (1){ 
  6. //    echo "hello world"; 
  7.     $num = 1; 

2.Encoding

可以使用encoding指令来对每段脚本指定其编码方式

declare(encoding='cp936');  //必须在文件代码第一行

3.strict_types

开启严格模式.默认是弱类型校验.

declare(strict_types=1);

以下内容转自:https://www.cnblogs.com/kudosharry/p/3795356.html

php里的declare用法

  1. function tick_handler ()         
  2. {            
  3. echo  "tick_handler() called<br>" ;        
  4. }         
  5. function  tick_handler1 ()       
  6. {            
  7. echo  "tick_handler1() called<br>" ;       
  8.  register_tick_function ( 'tick_handler' );      
  9.  register_tick_function ( 'tick_handler1' ); 
  10. declare( ticks = 1 ) 
  11. {             
  12. $a  =  1 ; 
  13.               
  14. if ( $a  >  0 )  
  15. {                
  16.  $a  +=  2 ;                 
  17. print( $a );             
  18. }        
  19. }        
  20. exit

这里首先定义了两个函数,然后注册到系统,随后通过declare定义一个ticks,步长为1,作用是在declare作用域中的代码每执行ticks次步长,就执行一次注册的方法,方法顺与注册的顺序一致。

所以上面的执行结果是:

  1. tick_handler() called 
  2. tick_handler1() called 
  3. tick_handler() called 
  4. tick_handler1() called 
  5. 3tick_handler() called 
  6. tick_handler1() called 
  7. tick_handler() called 
  8. tick_handler1() called 
  9. tick_handler() called 
  10. tick_handler1() called 
  11. tick_handler() called 
  12. tick_handler1() called 

这个方法可以测试执行代码的处理时间。

Tags: declare

分享到: