PHP基本语法规则
PHP脚本在服务器上执行,然后将纯HTML结果发送回浏览器。PHP脚本可以放在文档中的任何位置。
<?php 开始,以 ?> 结束,每条语句以分号;结尾。
PHP文件结构
一个典型的PHP文件包含HTML标签和一些PHP脚本代码。PHP代码可以嵌入到HTML中的任何位置。
PHP与服务器交互
PHP是一种服务器端脚本语言,意味着它在服务器上执行,客户端接收到的只是执行后的结果(通常是HTML)。
PHP标签
PHP支持多种标签格式来标识PHP代码块:
1. 标准标签(推荐)
<?php
echo "Hello World!";
?>
2. 短标签(需要开启short_open_tag)
<?
echo "Hello World!";
?>
3. ASP风格标签(需要开启asp_tags)
<%
echo "Hello World!";
%>
<?php ?>。
短输出语法
PHP提供了一个短输出语法,用于快速输出单个表达式的结果。
<?= "Hello World!" ?>
这等同于:
<?php echo "Hello World!"; ?>
PHP语句
PHP脚本由一系列语句组成,每条语句以分号;结尾。
<?php
echo "第一条语句";
echo "第二条语句";
$name = "张三";
?>
语句的类型
PHP语句可以分为多种类型,包括:
- 赋值语句: 将值赋给变量
- 函数调用语句: 调用函数执行操作
- 条件语句: 根据条件执行不同的代码块
- 循环语句: 重复执行代码块
- 返回语句: 从函数返回值
代码块
在PHP中,可以使用花括号{}来创建代码块,通常用于控制结构和函数。
<?php
// if语句的代码块
if ($age > 18) {
echo "成年人";
$adult = true;
}
// 函数的代码块
function sayHello() {
echo "Hello!";
}
?>
代码块的作用域
在PHP中,代码块不会创建新的作用域(除了函数和方法)。在代码块内部定义的变量在代码块外部仍然可见。
<?php
$x = 10;
if (true) {
$y = 20; // 在代码块内部定义的变量
}
echo $y; // 可以访问,输出20
?>
PHP与HTML混合
PHP代码可以嵌入到HTML中的任何位置。
<!DOCTYPE html>
<html>
<head>
<title>
<?php echo "我的网站"; ?>
</title>
</head>
<body>
<h1>
<?php
$name = "访客";
echo "欢迎, " . $name;
?>
</h1>
<?php if ($isLoggedIn): ?>
<p>您已登录</p>
<?php else: ?>
<p>请先登录</p>
<?php endif; ?>
</body>
</html>
PHP在HTML中的最佳位置
虽然PHP可以嵌入到HTML的任何位置,但为了代码的可维护性,建议:
- 将大部分PHP逻辑放在HTML之前
- 在HTML中只使用PHP进行简单的输出和条件判断
- 避免在HTML中嵌入复杂的PHP逻辑
<?php
// 在HTML之前处理逻辑
$pageTitle = "我的网站";
$userName = "张三";
$isLoggedIn = true;
?>
<!DOCTYPE html>
<html>
<head>
<title><?= $pageTitle ?></title>
</head>
<body>
<h1>欢迎, <?= $userName ?></h1>
<?php if ($isLoggedIn): ?>
<p>您已登录</p>
<?php else: ?>
<p>请先登录</p>
<?php endif; ?>
</body>
</html>
PHP指令分隔符
PHP需要在每个语句的结尾加上分号;。但在PHP结束标签前的最后一个语句可以省略分号。
<?php
echo "第一条语句"; // 需要分号
echo "第二条语句"; // 需要分号
echo "最后一条语句" // 可以省略分号(但不推荐)
?>
常见的分号错误
忘记分号是PHP初学者常见的错误之一,会导致解析错误。
<?php
echo "Hello World" // 缺少分号
$name = "张三" // 缺少分号
echo "欢迎, $name";
?>
上面的代码会产生解析错误,因为前两个语句缺少分号。
空白字符和代码格式
PHP对空白字符(空格、制表符、换行)不敏感,但良好的代码格式可以提高可读性。
<?php
// 良好的格式
function calculateSum($a, $b) {
$result = $a + $b;
return $result;
}
// 不良的格式(虽然能运行,但难以阅读)
function calculateSum($a,$b){$result=$a+$b;return $result;}
?>
代码格式化指南
遵循一致的代码格式化风格可以使代码更易于阅读和维护:
- 使用4个空格或1个制表符进行缩进
- 在运算符前后添加空格
- 在逗号后添加空格
- 使用空行分隔逻辑相关的代码块
- 适当添加注释
<?php
// 函数定义
function calculateAverage($numbers) {
$sum = 0;
$count = count($numbers);
// 计算总和
foreach ($numbers as $number) {
$sum += $number;
}
// 计算平均值
if ($count > 0) {
return $sum / $count;
} else {
return 0;
}
}
// 使用函数
$scores = [85, 92, 78, 96, 88];
$average = calculateAverage($scores);
echo "平均分: $average";
?>
注释
注释是代码中的重要组成部分,用于解释代码的功能和目的。PHP支持三种注释风格。
单行注释
<?php
// 这是单行注释
# 这也是单行注释(不常用)
$name = "张三"; // 行末注释
?>
多行注释
<?php
/*
* 这是多行注释
* 可以跨越多行
* 用于详细说明代码块
*/
function calculateSum($a, $b) {
/*
* 计算两个数的和
* 参数: $a - 第一个数
* $b - 第二个数
* 返回: 两个数的和
*/
return $a + $b;
}
?>
文档注释
文档注释是一种特殊的多行注释,用于生成API文档。
<?php
/**
* 计算两个数的和
*
* @param int $a 第一个数
* @param int $b 第二个数
* @return int 两个数的和
*/
function add($a, $b) {
return $a + $b;
}
?>
PHP语法检查
在部署PHP代码之前,应该检查语法是否正确。PHP提供了命令行工具来检查语法。
php -l filename.php
如果语法正确,将显示:
No syntax errors detected in filename.php
如果存在语法错误,将显示错误信息:
PHP Parse error: syntax error, unexpected 'echo' (T_ECHO) in filename.php on line 3
常见的语法错误
- 缺少分号
- 括号不匹配
- 引号不匹配
- 变量名拼写错误
- 使用未定义的函数
PHP语法最佳实践
遵循最佳实践可以编写更清晰、更易维护的代码。
代码组织
良好的代码组织可以提高可读性和可维护性。
<?php
// 1. 配置和常量定义
define('APP_NAME', '我的应用');
define('DEBUG_MODE', true);
// 2. 包含文件
require_once 'config.php';
include 'functions.php';
// 3. 函数定义
function processData($data) {
// 处理数据
return trim($data);
}
// 4. 主逻辑
$input = $_POST['input'] ?? '';
$result = processData($input);
// 5. 输出
echo "处理结果: $result";
?>
错误处理
适当的错误处理可以提高代码的健壮性。
<?php
// 启用错误报告
error_reporting(E_ALL);
ini_set('display_errors', 1);
// 检查文件是否存在
$filename = 'data.txt';
if (!file_exists($filename)) {
trigger_error("文件 $filename 不存在", E_USER_WARNING);
exit;
}
// 安全地读取文件
$content = file_get_contents($filename);
if ($content === false) {
trigger_error("无法读取文件 $filename", E_USER_ERROR);
exit;
}
echo "文件内容: $content";
?>
实践练习
创建一个PHP文件,实现以下功能:
- 使用标准PHP标签
- 输出一个标题和一段文字
- 在HTML中嵌入PHP变量
- 使用if语句根据条件显示不同内容
- 添加适当的注释
- 使用良好的代码格式
<?php
/*
* 用户欢迎页面
* 根据时间显示不同的问候语
*/
// 获取当前小时
$currentHour = date('H');
// 根据时间设置问候语
if ($currentHour < 12) {
$greeting = "早上好";
} elseif ($currentHour < 18) {
$greeting = "下午好";
} else {
$greeting = "晚上好";
}
// 用户信息
$userName = "张三";
$loginCount = 15;
?>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title><?= $greeting ?>,<?= $userName ?></title>
</head>
<body>
<h1><?= $greeting ?>,<?= $userName ?>!</h1>
<p>这是您第 <?= $loginCount ?> 次登录。</p>
<?php if ($loginCount > 10): ?>
<p>感谢您的持续支持!</p>
<?php else: ?>
<p>欢迎新用户!</p>
<?php endif; ?>
</body>
</html>