文字列内の変数を連結したり、代わりに中括弧を使用したりすることには、利点または欠点がありますか?
連結:
$greeting = "Welcome, " . $name . "!";
中括弧:
$greeting = "Welcome, {$name}!";
EStudio を使用しているため、個人的には常に文字列を連結してきました。連結すると、PHP変数が異なる色で強調表示されます。ただし、変数が壊れていますが、そうではありません。長い文字列でPHP変数などを見つけやすくなるだけです。
人々はSQLについてこれを混乱させています。これはではありませんこの質問についてです。混乱を避けるためにサンプルを更新しました。
出力を見ると、以下のすべてが同じです。
$greeting = "Welcome, " . $name . "!";
$greeting = 'Welcome, ' . $name . '!';
$greeting = "Welcome, $name!";
$greeting = "Welcome, {$name}!";
オプション1を使用してはならず、代わりにオプション2を使用してください。オプション3と4はどちらも同じです。単純な変数の場合、中括弧はオプションです。ただし、配列要素を使用している場合は、中括弧を使用する必要があります。例:$greeting = "Welcome, {$user['name']}!";
。したがって、標準では、変数補間が使用される場合は、連結ではなく中括弧が使用されます。
ただし、タブ(\t
)、改行(\n
)を使用する場合は、二重引用符で囲む必要があります。
一般に、変数の補間は低速ですが、変数が多すぎて連結できない場合は、連結も遅くなる可能性があります。したがって、他の文字間の変数の数に応じて決定します。
インジェクション攻撃(SQLiを含む)は扱っていませんが、特にPHP devs-最初に上記の手法を使用せずに使用している場合エンコードと検証)すべての入力は、注入ベースの攻撃につながります。
セキュリティ要件を遵守するためにすべてのコードをやり直す必要があるときではなく、コーディングの最初にセキュリティを覚えておくことが重要です。または、最終的にこの ""対ウォーダウンを取得し、すべての入力を適切にエンコードおよび検証せずにいずれかの手法を使用してXSSの影響を受けやすいため、問題がないことを理解した場合。
コンパイル済みPHP(バイトコードキャッシュ)の場合、違いはありません。
この機能にはPHP 5.5(Zend Optimizer +))が付属しています。