php マニュアル

version PHP 4.1.0 - PHP 5.x.x (newer)

PHP   Pear   MySQL  

declare

(PHP 4, PHP 5)

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

declare (命令)
    文

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

注意: encoding ディレクティブは PHP 5.3.0 で追加されました。

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

declare構造はグローバルスコープしても使用され、 それはそれ以降のコード上の全てにおいて影響します (しかし、declare を含むファイルがインクルードされた場合は、 親ファイルにはその影響は及びません)。

<?php
// 以下は同じ意味です

// こうすることもできますし、
declare(ticks=1) {
    
// ここにすべてのスクリプトを書きます
}

// こうすることもできます
declare(ticks=1);
// ここにすべてのスクリプトを書きます
?>

Ticks

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

すべての文が tick 可能なわけではありません。 たとえば条件式や引数式などは tick できません。

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

例1 Tick の使用例

<?php

declare(ticks=1);

// tick イベントごとにコールされる関数
function tick_handler()
{
    echo 
"tick_handler() called\n";
}

register_tick_function('tick_handler');

$a 1;

if (
$a 0) {
    
$a += 2;
    print(
$a);
}

?>

例2 Ticks の使用例

<?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() も参照ください。

Encoding

スクリプトのエンコーディングをスクリプトごとに指定するには encoding ディレクティブを使用します。

例3 スクリプトのエンコーディングの宣言

<?php
declare(encoding='ISO-8859-1');
// ここにコードを書きます
?>

警告

名前空間と組み合わせて使用する場合、使用できる形式は declare(encoding='...'); のみです。... にエンコーディングを指定します。declare(encoding='...') {} は、名前空間と組み合わせるとパースエラーとなります。

php を --enable-zend-multibyte つきでコンパイルしていない場合、 PHP 5.3 では encoding 宣言は無視されます。

PHP が --enable-zend-multibyte つきでコンパイルされているかどうかを知る方法は phpinfo() 以外に存在しないことに注意しましょう。

zend.script_encoding も参照ください。


 
 

Add Comment

※半角英数

Add Comment  (注) 修正するときは、以前入力したKeyを入力してください。(単純なキーの場合、上書きされてしまいます)

 
 

Comment

コメントはまだ登録されていません。一番乗りで関数の利用方法を書いてみませんか?

 
 
 
 
New Entry

php/function.preg-match.html

先頭3桁が070、080、090のいずれかで始まる電話番号にマッチするパターン

Show Detail

php/function.mb-strimwidth.html

文字コードを指定して、全角半角が混在している文字列を短縮。

Show Detail

mysql/index.html

H7EnFK dvyozfiiutul, [url=http://mcfonuzjslbq.com/]mcfonuzjslbq[/url], [link=http://rosbokkudfzh.com/]rosbokkudfzh[/link], http://stjnnhsdhiyo.com/

Show Detail

: JAPANESE/index.html

Замечательно, это весьма ценное сообщение Очень любопытно :) _________________________________________________________________________ http://trustavia.ru/communication/forum/user/4652/ http://omax.ru/communication/forum/user/1089/

Show Detail

index.html

はじめてのコメント

Show Detail