PHP - Heredoc и Nowdoc:Friendly Guide для начинающих

Здравствуйте,野心勃勃的PHP程序员们!今天,我们将深入探讨PHP的两个非常实用的特性,它们可以在处理字符串时让你的生活变得轻松许多:Heredoc和Nowdoc。别担心这些术语听起来像外星语言——在本教程结束时,你会像专业人士一样使用它们!

PHP - Heredoc & Nowdoc

Heredoc和Nowdoc是什么?

在我们深入了解之前,让我们简单地理解一下Heredoc和Nowdoc是什么。想象你正在给朋友写一封长信。难道不是更好,如果你可以不用每行都使用引号,而是自由地写作吗?这正是Heredoc和Nowdoc在PHP中允许你做的——编写多行字符串而不必担心转义引号。

PHP中的Heredoc字符串

Heredoc是什么?

Heredoc是PHP中定义字符串的一种方式,它允许你不用引号编写多行文本。这在需要在你代码中包含大块文本时特别有用,比如HTML片段或长消息。

如何使用Heredoc

要使用Heredoc,你需要以<<<开始,后面跟着一个标识符(我们称之为EOD,代表“文档结束”),然后是你的文本,最后用同一个标识符关闭它。这里有一个简单的例子:

<?php
$name = "Alice";
$message = <<<EOD
Привет, $name!
Добро пожаловать в удивительный мир PHP.
Это строка Heredoc.
EOD;

echo $message;
?>

当你运行这段代码时,它将输出:

Привет, Alice!
Добро пожаловать в удивительный мир PHP.
Это строка Heredoc.

让我们分解一下:

  1. 我们用<<<EOD开始Heredoc字符串
  2. 我们编写我们的多行消息
  3. 我们在新行上用EOD;结束Heredoc字符串
  4. PHP将$name替换为"Alice",因为Heredoc允许变量插值

Heredoc中的变量插值

Heredoc的一个很酷的特性是它会自动解释变量。让我们看另一个例子:

<?php
$fruit = "apple";
$count = 5;

$shopping_list = <<<EOD
Мой список покупок:
- $count {$fruit}s
- 2 банана
- 1 буханка хлеба
EOD;

echo $shopping_list;
?>

这将输出:

Мой список покупок:
- 5 яблок
- 2 банана
- 1 буханка хлеба

注意$count$fruit被替换成了它们的值。{$fruit}s语法允许我们直接在变量值后面加上's'。

Heredoc与HTML

Heredoc在需要将HTML包含在PHP代码中时非常方便。这里有一个例子:

<?php
<title = "Моя классная страница";
$content = "Добро пожаловать на мой сайт!";

$html = <<<EOD
<!DOCTYPE html>
<html>
<head>
<title>$title</title>
</head>
<body>
<h1>$title</h1>
<p>$content</p>
</body>
</html>
EOD;

echo $html;
?>

这将生成一个完整的HTML页面,而无需转义任何引号!

PHP中的Nowdoc字符串

Nowdoc是什么?

Nowdoc与Heredoc非常相似,但有一个关键区别:它将内容视为字面字符串,意味着它不会解释变量或转义序列。

如何使用Nowdoc

要使用Nowdoc,你需要在标识符周围使用单引号。这里有一个例子:

<?php
$name = "Bob";
$message = <<<'EOD'
Привет, $name!
Это строка Nowdoc.
Здесь переменные не interpretируются.
EOD;

echo $message;
?>

这将输出:

Привет, $name!
Это строка Nowdoc.
Здесь переменные не interpretируются.

注意$name没有被替换成"Bob"。这就是Heredoc和Nowdoc之间的关键区别。

何时使用Nowdoc

当需要包含不应解释变量的代码示例或任何文本时,Nowdoc是完美的。例如:

<?php
$php_code = <<<'CODE'
<?php
$greeting = "Привет, мир!";
echo $greeting;
?>
CODE;

echo "Вот пример PHP кода:\n\n";
echo $php_code;
?>

这将输出:

Вот пример PHP кода:

<?php
$greeting = "Привет, мир!";
echo $greeting;
?>

Nowdoc字符串中的PHP代码显示为 exactly as written,没有任何解释。

比较Heredoc和Nowdoc

为了总结Heredoc和Nowdoc之间的区别,让我们看一下比较表:

特性 Heredoc Nowdoc
语法 <<<EOD <<<'EOD'
变量插值
转义序列 解释 不解释
用例 动态内容,HTML 字面字符串,代码示例

结论

就这样,朋友们!Heredoc和Nowdoc是你PHP工具箱中的强大工具。当你需要处理包含变量的多行字符串时,Heredoc非常棒,而Nowdoc在需要字符串字面量时是完美的。

记住,编程都是关于选择合适的工具来完成任务。现在你理解了Heredoc和Nowdoc,当处理长字符串或HTML片段时,你可以编写更干净、更易读的代码。

继续练习,很快你就能像专业人士一样串联PHP代码!快乐编码!

Credits: Image by storyset