ホームページ  >  記事  >  バックエンド開発  >  php--declare ステートメント

php--declare ステートメント

伊谢尔伦
伊谢尔伦オリジナル
2016-11-24 09:14:571504ブラウズ

declare 構造は、コードの実行命令を設定するために使用されます。 declare の構文は他のフロー制御構造と似ています。

declare (directive)
    statement

ディレクティブ部分では、declare セクションの動作を設定できます。現在、知られている命令はティックとエンコーディングの 2 つだけです。

注: エンコーディングは PHP 5.3.0 の新しいコマンドです。

宣言コードセグメントのステートメント部分が実行されます。どのように実行されるか、実行中にどのような副作用が発生するかは、ディレクティブで設定された命令によって異なります。

宣言構造はグローバル スコープでも使用でき、後続のすべてのコードに影響します (ただし、宣言構造を持つファイルが他のファイルにインクルードされている場合、それを含む親ファイルには影響しません)。

<?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

Tick (クロック サイクル) は、インタプリタが宣言コード セグメント内の N 個の時間指定可能な低レベル ステートメントを実行するたびに発生するイベントです。 Nの値はdeclareのディレクティブ部分のticks=Nで指定します。

すべてのステートメントに時間を設定できるわけではありません。通常、条件式とパラメータ式は時間指定できません。

各ティックで発生するイベントは register_tick_function() で指定されます。詳細については、以下の例を参照してください。各ティックで複数のイベントが発生する可能性があることに注意してください。

例 #1 Tick の使用例

<?php
declare(ticks=1);
// A function called on each tick event
function tick_handler()
{
    echo "tick_handler() called\n";
}
register_tick_function(&#39;tick_handler&#39;);
$a = 1;
if ($a > 0) {
    $a += 2;
    print($a);
}
?>

例 #2 Tick の使用例

<?php
function tick_handler()
{
  echo "tick_handler() called\n";
}
$a = 1;
tick_handler();
if ($a > 0) {
    $a += 2;
    tick_handler();
    print($a);
    tick_handler();
}
tick_handler();
?>

register_tick_function() と unregister_tick_function() を参照してください。

エンコーディング

エンコーディング ディレクティブを使用して、各スクリプトのエンコーディング方法を指定できます。

例 #3 スクリプトのエンコード方法を指定します

ea7038b934caf55ed7f035f208f239fa

名前空間と組み合わせる場合の宣言の注意唯一の有効な構文は、declare(encoding='...'); です。ここで、... はエンコードされた値です。また、declare(encoding='...') {} を名前空間と組み合わせると解析エラーが発生します。


PHP 5.3 では、コンパイル時に --enable-zend-multibyte が指定されない限り、declare のエンコーディング値は無視されます。

phpinfo() が使用されない限り、PHP はコンパイル中に --enable-zend-multibyte が指定されたかどうかを表示しないことに注意してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。