PHP マニュアル
前のページ | 第 12 章 制御構造 | 次のページ

# `declare`

`declare` 命令は、あるコードブロックの中に 実効命令をセットするために使用されます。`declare` の文法は他の制御構造と似ています。

    declare (命令) 文

`命令`の箇所で、セットされた`declare`ブロックの挙動を指定することが出来ます。 現在のところ、使用できる命令は`ticks`の 一つだけです。( ticksに関しては以下を参照してください)

`declare`ブロックの`文` の実行のされ方や実行時にどのような作用が起こるかについては `命令`に何が指定されたかに依存します。

## ticks

tickとは`declare`ブロックの実行中にパーサが `N`個の低レベル命令を実行するごとに 発生するイベントのことです。`N`の値は `declare`ブロックの`命令`の箇所で `ticks=`N``のように 指定します。

tickごとに発生させるイベントはregister_tick_function() を使用して指定します。詳細は以下の例を参照してください。1回のtickで 複数のイベントが起こり得ることに注意してください。

例 12-1PHPのコードの一部をプロファイルする

    <pre>
    <?php
    // 呼び出されるとその時間を記録する関数
    function profile ($dump = FALSE)
    {
        static $profile;

        // 格納されたプロファイルを返し、その値を削除する
        if ($dump) {
            $temp = $profile;
            unset ($profile);
            return ($temp);
        }

        $profile[] = microtime ();
    }

    // tickハンドラの設定
    register_tick_function("profile");

    // declareブロックの前で初期化しておく
    profile ();

    // 2命令ごとにtickを投げるように設定しブロックを実行する
    declare (ticks=2) {
        for ($x = 1; $x < 50; ++$x) {
            echo similar_text (md5($x), md5($x*$x)), "<br>";
        }
    }

    // プロファイラに格納されたデータを表示する
    print_r (profile (TRUE));
    ?>
    </pre>

この例では、'declare'ブロックのコード中で2個の低レベル 命令が実行されるごとにその時間を記録してプロファイルを 行っています。この情報はコードのあるセクションの中で 遅い箇所を探すのに使用できます。この処理は他の手法でも 使用できます。ticksを使用することで実装が簡単になる 場合が多々あるのです。

ticksはデバッグ、単純なマルチタスク処理、バックグラウンドI/Oや その他多くの処理を実装するのに便利です。

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

前のページ | ホーム | 次のページ
`switch` | 上に戻る | return