Skip to content

PHP 语法

PHP 脚本通常嵌入在 HTML 文档中。PHP 解释器会执行特殊标签内的代码块,并将输出(通常是 HTML)发送到浏览器。

PHP 脚本块可以放置在 HTML 文档的任何位置。标准且推荐使用的标签是 <?php ... ?>。

<?php
// PHP 代码在此处编写
echo "这部分由 PHP 处理。";
?>

短 echo 标签 <?= ... ?> 从 PHP 5.4 开始可用,对于输出简单表达式很有用。它们等同于 <?php echo ... ?>。

<p>Your username is: <?= htmlspecialchars($username, ENT_QUOTES, 'UTF-8'); ?></p>

避免使用短标签 <? ... ?> 和 ASP 风格标签 <% ... %>,因为它们在未来的 PHP 版本中可能被禁用或移除,并损害代码的可移植性。

包含 PHP 代码的文件的默认文件扩展名是 .php。

典型的 PHP 文件包含 HTML 标记和 PHP 代码块的混合:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>My First PHP Page</title>
</head>
<body>
<h1>Welcome!</h1>
<p>Today's date is:
<?php
// 使用推荐的 DateTimeImmutable 类
$today = new DateTimeImmutable();
echo $today->format('Y-m-d');
?>
</p>
<?php
// 定义一个变量
$message = "Hello from PHP!";
// 输出变量
echo "<p>" . htmlspecialchars($message, ENT_QUOTES, 'UTF-8') . "</p>";
?>
</body>
</html>

注意:PHP 语句通常以分号(;)结束。关闭标签 ?> 会自动为块中的最后一个语句补上分号,但显式包含它是个好习惯。如果一个文件只包含 PHP 代码,最好省略关闭标签 ?>,以防止意外的空白输出。

注释是 PHP 解释器忽略的代码部分。它们对于解释代码逻辑、文档化功能或临时禁用代码至关重要。

使用注释来:

  • 解释代码以某种方式编写的原因,而不仅仅是做了什么。
  • 文档化函数、类和复杂算法。
  • 为自己或其他开发者留下笔记。
  • 在调试期间临时禁用代码行。

PHP 支持 C 风格和 shell 风格的注释:

<?php
// 这是一个单行注释
# 这也是一个单行注释(不太常用)
/*
这是一个多行注释块。
它可以跨越多行。
*/
// 使用注释来解释复杂部分或留下笔记:
$discount = $price * 0.1; // 应用 10% 的折扣
/* 临时禁用代码:
if ($userIsAdmin) {
// grantAccess();
}
*/
$x = 5 + /* 15 */ + 5; // 注释可以出现在语句中
echo $x; // 输出 10
// 提示:使用 PHPDoc 块 (/** ... */) 来文档化函数和类
/**
* 添加两个数字。
*
* @param int|float $a 第一个数字。
* @param int|float $b 第二个数字。
* @return int|float 两个数字的和。
*/
function add($a, $b) {
return $a + $b;
}
?>

PHP 的大小写敏感性规则有时会让初学者感到困惑:

  • 不区分大小写: 语言结构(例如 if、else、while、echo、return)、函数名(内置和用户定义)、类名、方法名、关键字以及类型名(例如 string、int、array)。
  • 区分大小写: 变量名(包括超全局变量,如 $_GET、$_POST)、常量(按照约定,通常以大写字母定义)。类属性也区分大小写。

示例:

<?php
// 函数名不区分大小写
ECHO "Hello World!<br>";
echo "Hello World!<br>";
EcHo "Hello World!<br>";
// 变量名区分大小写
$color = "red";
$Color = "blue";
echo "The car is " . $color . "<br>"; // 输出:The car is red
echo "The sky is " . $Color . "<br>"; // 输出:The sky is blue
// This would cause an Undefined variable error
// echo "The boat is " . $COLOR . "<br>";
// 常量区分大小写
define("GREETING", "Hello there!");
echo GREETING; // 输出:Hello there!
// 这将导致错误(假设 'greeting' 是一个字符串字面量)
// echo greeting;
?>

最佳实践:虽然函数名和类名不区分大小写,但遵循一致的编码标准对于提高可读性和可维护性至关重要。广泛采用的 PSR 标准建议:

  • camelCase 用于函数和方法名(myFunction、calculateTotal)。
  • PascalCase(或 UpperCamelCase)用于类名(MyClass、UserController)。
  • 使用下划线的 UPPER_CASE 用于常量(MAX_USERS、DEFAULT_TIMEOUT)。
  • camelCase 或 snake_case 用于变量名(在项目中坚持使用一种风格,camelCase 在现代 PHP 中很常见:$userName、$totalAmount)。

遵守这些约定能让你的代码更容易被他人(以及将来的你)理解。