foo.さて、私は printi です"/> foo.さて、私は printi です">

ホームページ  >  記事  >  バックエンド開発  >  PHPの<<<とはどのようなシンボルであり、その対処方法は何ですか

PHPの<<<とはどのようなシンボルであり、その対処方法は何ですか

WBOY
WBOYオリジナル
2016-06-13 13:34:152202ブラウズ

php の <<< の記号は何ですか?


の記号は何ですか? ----- ------------区切り文字エコー <<私の名前は "$name" で、$foo- を出力しています。 >foo .
今、いくつかの {$foo->bar[1]} を出力しています。
これは大文字の 'A' を出力するはずです: x41
EOT;
?> 🎜>

------解決策---------
区切り文字を与える別の方法文字列の区切りには区切り文字構文 (「<<<」) が使用されます。 <<< の後に識別子を指定し、次に文字列を指定し、同じ識別子で文字列を終了する必要があります。

終了識別子は行の最初の列で始まる必要があります。同様に、識別子は PHP の他のタグの命名規則に従う必要があります。識別子には英数字のアンダースコアのみが含まれ、アンダースコアまたは数字以外の文字で始まる必要があります。

------解決策------
ヒアドキュメント構文構造: <<<プロンプトの後に、識別子を定義し、その後に新しい行を入力します。次に文字列自体が続き、最後に前に定義した識別子が終了マークとして使用されます。
の最後に引用された識別子は、行の先頭になければなりません。さらに、識別子の命名は、他のタグと同じ PHP ルールに従う必要があります。文字、数字、アンダースコアのみを含めることができます。アンダースコアで始まる数字は使用できません。
終了識別子の行には、セミコロン (;) を除く他の文字を含めてはいけないことに注意してください。これは、識別子をインデントしたり、セミコロンの前後に空白やタブを入れたりすることはできないことを意味します。さらに重要なのは、終了識別子の前にローカル オペレーティング システムで認識される改行ラベル (UNIX および Mac OS X システムの n など) を付ける必要があり、終了識別子 (セミコロンが付いている場合がある) の後にも改行ラベルを付ける必要があることです。ラベル。

このルールに従わず、終了タグが「クリーン」でない場合、PHP はそれが終了識別子ではないと判断し、検索を続けます。ファイルの終わりまでに正しい終了識別子が見つからない場合、PHP は最後の行で構文エラーを生成します。

ヒアドキュメント構造体はクラスの初期化に使用できません。また、PHP 5.3 以降では、この制限は変数が含まれている場合にのみ使用できます。

例 #1 不正な例

class foo {
public $bar = <<bar
EOT ;
}
?>
ヒアドキュメント構造は、二重引用符のない二重引用符で囲まれた文字列のようなものです。これは、ヒアドキュメント構造内で引用符が置き換えられず、上記の文字 (n など) が置き換えられることを意味します。も使用できます。 変数は置換されますが、複雑な変数をヒアドキュメント構造内の文字列として表現する場合は注意してください。

例 #2 ヒアドキュメント構造の文字列の例

$str = <<複数行にわたる文字列
の例
ヒアドキュメント構文を使用します。
EOD;

/* 変数を使用したより複雑な例*/
class foo
{
var $foo;
var $bar ;

function foo()
{
$this->foo = 'Foo';
$this->bar = array('Bar1', 'Bar2', ' Bar3 ');
}
}

$foo = new foo();
$name = 'MyName';

echo <<私の名前は "$name" です。$foo->foo を出力しています。
今、{$foo->bar[1]} を出力しています。
これは大文字を出力するはずです。 'A': x41
EOT;
?>
上記のルーチンは次のように出力します:

私の名前は "MyName" です。
今、私は Foo を出力しています。 Bar2 を出力しています。
これは大文字の 'A' を出力するはずです: A 関数パラメータで Heredoc 構造を使用してデータを送信することもできます:

例 #3 パラメータでの Heredoc 構造の例

var_dump(array(<<foobar!
EOD
));
?> PHP 5.3 .0 以降また、ヒアドキュメント構造体を使用して静的変数、クラス属性と定数を初期化することもできます:

例 #4 ヒアドキュメント構造体を使用して静的な値を初期化する

/ / 静的変数
function foo()
{
static $bar = <<ここには何もありません...
LABEL;
}

//クラスの定数と属性
class foo
{
const BAR = <<定数の例
FOOBAR;

public $baz = <<プロパティの例
FOOBAR;
}
?>
PHP 5.3.0 では、ヒアドキュメント構造内の識別子を宣言するために二重引用符も使用されます。

例 5 ヒアドキュメント構造での二重引用符の使用

echo <<<"FOOBAR"
Hello World!
FOOBAR;
?>

------解決策---------

区切り文字 1. PHP デリミタの機能は、改行形式などを含めて、その中にあるものをそのまま出力することです。
2. PHP デリミタ内の特殊文字はエスケープする必要がありません。 .PHP 区切り文字は通常、その値に置き換えられます。

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