declare


declare

declare 结构用来设定一段代码的执行指令。declare 的语法和其它流程控制结构相似:

declare (directive)
    statement

directive 部分允许设定 declare 代码段的行为。目前只认识两个指令:ticks(更多信息见下面 ticks 指令)以及 encoding(更多信息见下面 encoding指令)。

Note: encoding 是 PHP 5.3.0 新增指令。

declare 代码段中的 statement 部分将被执行——怎样执行以及执行中有什么副作用出现取决于 directive 中设定的指令。

declare 结构也可用于全局范围,影响到其后的所有代码(但如果有 declare 结构的文件被其它文件包含,它对包含它的文件不起作用)。 <?php
// these are the same:

// you can use this:
declare(ticks=1) {
    
// entire script here
}

// or you can use this:
declare(ticks=1);
// entire script here
?>

Ticks

Caution

ticks 指令在 PHP 5.3.0 中是过时指令,将会从 PHP 6.0.0 移除。

Tick 是一个在 declare 代码段中解释器每执行 N 条低级语句就会发生的事件。N 的值是在 declare 中的 directive 部分用 ticks=N 来指定的。

在每个 tick 中出现的事件是由 register_tick_function() 来指定的。更多细节见下面的例子。注意每个 tick 中可以出现多个事件。

Example #1 评估一段 PHP 代码的执行时间

<?php
// A function that records the time when it is called
function profile($dump FALSE)
{
    static 
$profile;

    
// Return the times stored in profile, then erase it
    
if ($dump) {
        
$temp $profile;
        unset(
$profile);
        return (
$temp);
    }

    
$profile[] = microtime();
}

// Set up a tick handler
register_tick_function("profile");

// Initialize the function before the declare block
profile();

// Run a block of code, throw a tick every 2nd statement
declare(ticks=2) {
    for (
$x 1$x 50; ++$x) {
        echo 
similar_text(md5($x), md5($x*$x)), "<br />;";
    }
}

// Display the data stored in the profiler
print_r(profile (TRUE));
?>
这个例子评估“declare”中的 PHP 代码,每执行两条低级语句就记录一次时间。此信息可以用来找到一段特定代码中速度慢的部分。这个过程也可以用其它方法完成,但用 tick 更方便也更容易实现。

Ticks 很适合用来做调试,以及实现简单的多任务,后台 I/O 和很多其它任务。

参见 register_tick_function()unregister_tick_function()

Encoding

A script's encoding can be specified per-script using the encoding directive.

Example #2 Declaring an encoding for the script.

<?php
declare(encoding='ISO-8859-1');
// code here
?>

Caution

When combined with namespaces, the only legal syntax for declare is declare(encoding='...'); where ... is the encoding value. declare(encoding='...') {} will result in a parse error when combined with namespaces.

The encoding declare value is ignored in PHP 5.3 unless php is compiled with --enable-zend-multibyte. In PHP 6.0, the encoding directive will be used to inform the scanner what encoding the file is created in. Legal values are encoding names such as UTF-8.


«  switch
» return
快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道 作文范文 难忘这六年的风雨作文400字 冰雪情缘,情深几许 你是一树梅 2011年金工实习总结报告 我可以抱你吗? 原来我成了‘刺’ 其实我…… 那一次,我成功了作文650字 我为你唱首歌作文500字 捉鱼行动作文500字 冬天的景色 【精品】幼儿园实习单位鉴定 我读懂了青春作文 林业局2016年度工作总结 我给老师来评分 河套川放歌【组诗】【苦菜花文萃】 游桃花源 赏花作文700字 【我想......】 无奈作文200字 叹息,那时的一切,怜惜,此时的一梦 哆啦A梦来我家 让我愤怒的事件 走,听雨去550字 仰望头顶上的天空 小小世博“志愿者” 奥运等式 2015小学父亲节活动方案 一转身,便是天涯 励志人生:为人生多备只电筒 快乐的欢乐园游200字 倒霉!倒霉!倒霉! 一块有了愿望的石头 小学六年级作文600字:外教老师————Mitch 闲游禅悟 备战高考(一)语文篇之记叙文 姚家祥(转载)(会员上传) 弘一法师的认真 守望,星辰 分管后勤副园长年度述职报告 咱也说说GDP和经济增长方式的转变 我喜爱的名著中的人物 建行新入行员工工作总结 2015年村支书年度述职报告 玩转水上世界 夏季的天空作文900字 会知足才会幸福 愚人节另类整人七则 在困难面前作文400字 学生骂老师的句子 触人心弦的句子

Copyright © 2016 phpStudy |