PHP语法基础 #
一、PHP文件结构 #
1.1 基本结构 #
php
<?php
declare(strict_types=1);
namespace App;
use Some\Library;
class Example
{
}
1.2 文件命名 #
- 文件名使用小写字母
- 多个单词用下划线或连字符分隔
- 类文件名与类名一致(PascalCase)
text
user_controller.php
UserController.php
二、注释 #
2.1 单行注释 #
php
<?php
echo "Hello";
2.2 多行注释 #
php
<?php
echo "Hello";
2.3 文档注释(DocBlock) #
php
<?php
/**
* 用户类
*
* 用于管理用户信息和操作
*
* @package App\Models
* @author Developer
* @version 1.0.0
*/
class User
{
/**
* 用户ID
* @var int
*/
private int $id;
/**
* 获取用户名
*
* @return string 用户名
*/
public function getName(): string
{
return $this->name;
}
/**
* 设置用户年龄
*
* @param int $age 用户年龄,必须大于0
* @return void
* @throws InvalidArgumentException 如果年龄小于0
*/
public function setAge(int $age): void
{
if ($age < 0) {
throw new InvalidArgumentException("年龄不能小于0");
}
$this->age = $age;
}
}
2.4 常用DocBlock标签 #
| 标签 | 用途 | 示例 |
|---|---|---|
| @param | 参数说明 | @param string $name 名称 |
| @return | 返回值说明 | @return bool 是否成功 |
| @throws | 异常说明 | @throws Exception 异常 |
| @var | 变量类型 | @var int $count |
| @see | 参考链接 | @see https://php.net |
| @deprecated | 废弃说明 | @deprecated 1.5.0 使用newMethod() |
三、标识符 #
3.1 命名规则 #
标识符必须遵循以下规则:
- 以字母或下划线开头
- 只能包含字母、数字、下划线
- 区分大小写
php
<?php
$name = "valid";
$_name = "valid";
$name1 = "valid";
$Name = "different from $name";
$1name = "invalid";
$my-name = "invalid";
3.2 命名规范 #
变量:小驼峰(camelCase)
php
<?php
$firstName = "John";
$lastName = "Doe";
$userAge = 25;
常量:大写蛇形(UPPER_SNAKE_CASE)
php
<?php
define('MAX_SIZE', 100);
const MIN_VALUE = 0;
函数:小驼峰或蛇形
php
<?php
function getUserName() {}
function get_user_name() {}
类:大驼峰(PascalCase)
php
<?php
class UserController {}
class OrderItem {}
方法:小驼峰
php
<?php
class User
{
public function getFullName() {}
private function calculateTotal() {}
}
四、关键字 #
4.1 保留关键字 #
PHP保留关键字不能用作常量、类名或函数名:
text
abstract and array as break
callable case catch class clone
const continue declare default die
do echo else elseif empty
enddeclare endfor endforeach endif endswitch
endwhile eval exit extends final
finally fn for foreach function
global goto if implements include
include_once instanceof insteadof interface isset
list match namespace new or
print private protected public readonly
require require_once return static switch
throw trait try unset use
var while xor yield yield from
4.2 预定义常量 #
php
<?php
echo PHP_VERSION;
echo PHP_OS;
echo PHP_EOL;
echo PHP_INT_MAX;
echo DIRECTORY_SEPARATOR;
4.3 魔术常量 #
php
<?php
echo __LINE__;
echo __FILE__;
echo __DIR__;
echo __FUNCTION__;
echo __CLASS__;
echo __METHOD__;
echo __NAMESPACE__;
五、代码规范(PSR) #
PSR(PHP Standards Recommendations)是PHP的编码规范。
5.1 PSR-1:基础编码规范 #
php
<?php
namespace App\Model;
use App\Service\UserService;
class UserController
{
const VERSION = '1.0';
private UserService $userService;
public function getUser(int $id): ?User
{
return $this->userService->find($id);
}
}
5.2 PSR-12:扩展编码规范 #
缩进:
使用4个空格,不使用Tab。
行长度:
每行不超过120字符。
命名空间和use:
php
<?php
declare(strict_types=1);
namespace App\Controller;
use App\Service\UserService;
use App\Service\OrderService;
use App\Repository\UserRepository;
class UserController
{
}
类和方法:
php
<?php
class Example
{
private string $name;
public function __construct(string $name)
{
$this->name = $name;
}
public function process(
string $input,
int $count,
bool $flag = false
): array {
if ($flag) {
return [];
}
$result = [];
for ($i = 0; $i < $count; $i++) {
$result[] = $input;
}
return $result;
}
}
控制结构:
php
<?php
if ($condition) {
} elseif ($anotherCondition) {
} else {
}
switch ($value) {
case 1:
doSomething();
break;
case 2:
doOther();
break;
default:
doDefault();
}
foreach ($items as $key => $value) {
}
六、语句分隔 #
6.1 分号 #
PHP语句以分号结尾:
php
<?php
$a = 1;
$b = 2;
echo $a + $b;
6.2 最后一个分号 #
在PHP结束标签前的最后一个分号可以省略:
php
<?php echo "Hello" ?>
但推荐保留:
php
<?php echo "Hello"; ?>
6.3 纯PHP文件 #
纯PHP文件不使用结束标签:
php
<?php
namespace App;
class Helper
{
public static function format(string $input): string
{
return trim($input);
}
}
七、空白与格式 #
7.1 空格使用 #
操作符两侧:
php
<?php
$result = $a + $b * $c;
$isValid = ($x > 0) && ($y < 100);
逗号后:
php
<?php
function add(int $a, int $b, int $c): int
{
return $a + $b + $c;
}
$values = [1, 2, 3, 4, 5];
关键字后:
php
<?php
if ($condition) {
}
while ($running) {
}
foreach ($items as $item) {
}
7.2 空行使用 #
- 方法之间空一行
- 逻辑块之间可空一行
- 文件末尾空一行
php
<?php
class Calculator
{
public function add(int $a, int $b): int
{
return $a + $b;
}
public function subtract(int $a, int $b): int
{
return $a - $b;
}
public function complex(
int $a,
int $b,
int $c
): int {
$sum = $this->add($a, $b);
return $this->subtract($sum, $c);
}
}
八、严格模式 #
PHP 7+支持严格类型模式:
php
<?php
declare(strict_types=1);
function add(int $a, int $b): int
{
return $a + $b;
}
add(1, 2);
add(1.5, 2.5);
九、代码格式化工具 #
9.1 PHP-CS-Fixer #
bash
composer require --dev friendsofphp/php-cs-fixer
vendor/bin/php-cs-fixer fix src/
9.2 PHP_CodeSniffer #
bash
composer require --dev squizlabs/php_codesniffer
vendor/bin/phpcs src/
vendor/bin/phpcbf src/
十、总结 #
本章学习了:
- PHP文件的基本结构
- 单行、多行、文档注释
- 标识符命名规则和规范
- PHP关键字和保留字
- PSR编码规范
- 代码格式化最佳实践
遵循良好的编码规范,可以让代码更易读、更专业。下一章将学习PHP的数据类型。
最后更新:2026-03-26