manual-php
Version:
4,424 lines • 178 kB
HTML
<!DOCTYPE HTML>
<html lang="zh-hans" >
<head>
<meta charset="UTF-8">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<title>PSR-12 编码规范扩充 · PHP</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="description" content="">
<meta name="generator" content="GitBook 3.2.3">
<meta name="author" content="Kuriv Vesti">
<link rel="stylesheet" href="../../gitbook/style.css">
<link rel="stylesheet" href="../../gitbook/gitbook-plugin-back-to-top-button/plugin.css">
<link rel="stylesheet" href="../../gitbook/gitbook-plugin-chapter-fold/chapter-fold.css">
<link rel="stylesheet" href="../../gitbook/gitbook-plugin-lightbox/css/lightbox.min.css">
<link rel="stylesheet" href="../../gitbook/gitbook-plugin-prism/prism-okaidia.css">
<link rel="stylesheet" href="../../gitbook/gitbook-plugin-search-pro/search.css">
<link rel="stylesheet" href="../../gitbook/gitbook-plugin-splitter/splitter.css">
<link rel="stylesheet" href="../../gitbook/gitbook-plugin-fontsettings/website.css">
<meta name="HandheldFriendly" content="true"/>
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<link rel="apple-touch-icon-precomposed" sizes="152x152" href="../../gitbook/images/apple-touch-icon-precomposed-152.png">
<link rel="shortcut icon" href="../../gitbook/images/favicon.ico" type="image/x-icon">
<link rel="prev" href="PSR-4 自动加载规范.html" />
<link rel="shortcut icon" href='../../favicon.ico' type="image/x-icon">
<link rel="bookmark" href='../../favicon.ico' type="image/x-icon">
<link rel="apple-touch-icon" href='../../favicon.png'>
<link rel="apple-touch-icon" sizes="120x120" href="../../favicon-120x120.png">
<link rel="apple-touch-icon" sizes="180x180" href="../../favicon-180x180.png">
</head>
<body>
<div class="book">
<div class="book-summary">
<div id="book-search-input" role="search">
<input type="text" placeholder="输入并搜索" />
</div>
<nav role="navigation">
<ul class="summary">
<li class="chapter " data-level="1.1" data-path="../../">
<a href="../../">
PHP
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.1" data-path="../语言参考.html">
<a href="../语言参考.html">
语言参考
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.1.1" data-path="../语言参考/基本语法.html">
<a href="../语言参考/基本语法.html">
基本语法
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.1.1.1" data-path="../语言参考/基本语法/PHP 标记.html">
<a href="../语言参考/基本语法/PHP 标记.html">
PHP 标记
</a>
</li>
<li class="chapter " data-level="1.1.1.1.2" data-path="../语言参考/基本语法/从 HTML 中分离.html">
<a href="../语言参考/基本语法/从 HTML 中分离.html">
从 HTML 中分离
</a>
</li>
<li class="chapter " data-level="1.1.1.1.3" data-path="../语言参考/基本语法/指令分隔符.html">
<a href="../语言参考/基本语法/指令分隔符.html">
指令分隔符
</a>
</li>
<li class="chapter " data-level="1.1.1.1.4" data-path="../语言参考/基本语法/注释.html">
<a href="../语言参考/基本语法/注释.html">
注释
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.1.2" data-path="../语言参考/类型.html">
<a href="../语言参考/类型.html">
类型
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.1.2.1" data-path="../语言参考/类型/Boolean 布尔类型.html">
<a href="../语言参考/类型/Boolean 布尔类型.html">
Boolean 布尔类型
</a>
</li>
<li class="chapter " data-level="1.1.1.2.2" data-path="../语言参考/类型/Integer 整型.html">
<a href="../语言参考/类型/Integer 整型.html">
Integer 整型
</a>
</li>
<li class="chapter " data-level="1.1.1.2.3" data-path="../语言参考/类型/Float 浮点型.html">
<a href="../语言参考/类型/Float 浮点型.html">
Float 浮点型
</a>
</li>
<li class="chapter " data-level="1.1.1.2.4" data-path="../语言参考/类型/String 字符串.html">
<a href="../语言参考/类型/String 字符串.html">
String 字符串
</a>
</li>
<li class="chapter " data-level="1.1.1.2.5" data-path="../语言参考/类型/Array 数组.html">
<a href="../语言参考/类型/Array 数组.html">
Array 数组
</a>
</li>
<li class="chapter " data-level="1.1.1.2.6" data-path="../语言参考/类型/Object 对象.html">
<a href="../语言参考/类型/Object 对象.html">
Object 对象
</a>
</li>
<li class="chapter " data-level="1.1.1.2.7" data-path="../语言参考/类型/Resource 资源类型.html">
<a href="../语言参考/类型/Resource 资源类型.html">
Resource 资源类型
</a>
</li>
<li class="chapter " data-level="1.1.1.2.8" data-path="../语言参考/类型/NULL.html">
<a href="../语言参考/类型/NULL.html">
NULL
</a>
</li>
<li class="chapter " data-level="1.1.1.2.9" data-path="../语言参考/类型/Callable 可调用类型.html">
<a href="../语言参考/类型/Callable 可调用类型.html">
Callable 可调用类型
</a>
</li>
<li class="chapter " data-level="1.1.1.2.10" data-path="../语言参考/类型/类型转换的判别.html">
<a href="../语言参考/类型/类型转换的判别.html">
类型转换的判别
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.1.3" data-path="../语言参考/变量.html">
<a href="../语言参考/变量.html">
变量
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.1.3.1" data-path="../语言参考/变量/基本语法.html">
<a href="../语言参考/变量/基本语法.html">
基本语法
</a>
</li>
<li class="chapter " data-level="1.1.1.3.2" data-path="../语言参考/变量/变量范围.html">
<a href="../语言参考/变量/变量范围.html">
变量范围
</a>
</li>
<li class="chapter " data-level="1.1.1.3.3" data-path="../语言参考/变量/可变变量.html">
<a href="../语言参考/变量/可变变量.html">
可变变量
</a>
</li>
<li class="chapter " data-level="1.1.1.3.4" data-path="../语言参考/变量/来自 PHP 之外的变量.html">
<a href="../语言参考/变量/来自 PHP 之外的变量.html">
来自 PHP 之外的变量
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.1.4" data-path="../语言参考/常量.html">
<a href="../语言参考/常量.html">
常量
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.1.4.1" data-path="../语言参考/常量/基本语法.html">
<a href="../语言参考/常量/基本语法.html">
基本语法
</a>
</li>
<li class="chapter " data-level="1.1.1.4.2" data-path="../语言参考/常量/魔术常量.html">
<a href="../语言参考/常量/魔术常量.html">
魔术常量
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.1.5" data-path="../语言参考/表达式.html">
<a href="../语言参考/表达式.html">
表达式
</a>
</li>
<li class="chapter " data-level="1.1.1.6" data-path="../语言参考/运算符.html">
<a href="../语言参考/运算符.html">
运算符
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.1.6.1" data-path="../语言参考/运算符/运算符优先级.html">
<a href="../语言参考/运算符/运算符优先级.html">
运算符优先级
</a>
</li>
<li class="chapter " data-level="1.1.1.6.2" data-path="../语言参考/运算符/算数运算符.html">
<a href="../语言参考/运算符/算数运算符.html">
算数运算符
</a>
</li>
<li class="chapter " data-level="1.1.1.6.3" data-path="../语言参考/运算符/赋值运算符.html">
<a href="../语言参考/运算符/赋值运算符.html">
赋值运算符
</a>
</li>
<li class="chapter " data-level="1.1.1.6.4" data-path="../语言参考/运算符/位运算符.html">
<a href="../语言参考/运算符/位运算符.html">
位运算符
</a>
</li>
<li class="chapter " data-level="1.1.1.6.5" data-path="../语言参考/运算符/比较运算符.html">
<a href="../语言参考/运算符/比较运算符.html">
比较运算符
</a>
</li>
<li class="chapter " data-level="1.1.1.6.6" data-path="../语言参考/运算符/错误控制运算符.html">
<a href="../语言参考/运算符/错误控制运算符.html">
错误控制运算符
</a>
</li>
<li class="chapter " data-level="1.1.1.6.7" data-path="../语言参考/运算符/执行运算符.html">
<a href="../语言参考/运算符/执行运算符.html">
执行运算符
</a>
</li>
<li class="chapter " data-level="1.1.1.6.8" data-path="../语言参考/运算符/递增递减运算符.html">
<a href="../语言参考/运算符/递增递减运算符.html">
递增递减运算符
</a>
</li>
<li class="chapter " data-level="1.1.1.6.9" data-path="../语言参考/运算符/逻辑运算符.html">
<a href="../语言参考/运算符/逻辑运算符.html">
逻辑运算符
</a>
</li>
<li class="chapter " data-level="1.1.1.6.10" data-path="../语言参考/运算符/字符串运算符.html">
<a href="../语言参考/运算符/字符串运算符.html">
字符串运算符
</a>
</li>
<li class="chapter " data-level="1.1.1.6.11" data-path="../语言参考/运算符/数组运算符.html">
<a href="../语言参考/运算符/数组运算符.html">
数组运算符
</a>
</li>
<li class="chapter " data-level="1.1.1.6.12" data-path="../语言参考/运算符/类型运算符.html">
<a href="../语言参考/运算符/类型运算符.html">
类型运算符
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.1.7" data-path="../语言参考/流程控制.html">
<a href="../语言参考/流程控制.html">
流程控制
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.1.7.1" data-path="../语言参考/流程控制/if.html">
<a href="../语言参考/流程控制/if.html">
if
</a>
</li>
<li class="chapter " data-level="1.1.1.7.2" data-path="../语言参考/流程控制/else.html">
<a href="../语言参考/流程控制/else.html">
else
</a>
</li>
<li class="chapter " data-level="1.1.1.7.3" data-path="../语言参考/流程控制/elseif.html">
<a href="../语言参考/流程控制/elseif.html">
elseif
</a>
</li>
<li class="chapter " data-level="1.1.1.7.4" data-path="../语言参考/流程控制/while.html">
<a href="../语言参考/流程控制/while.html">
while
</a>
</li>
<li class="chapter " data-level="1.1.1.7.5" data-path="../语言参考/流程控制/do-while.html">
<a href="../语言参考/流程控制/do-while.html">
do-while
</a>
</li>
<li class="chapter " data-level="1.1.1.7.6" data-path="../语言参考/流程控制/for.html">
<a href="../语言参考/流程控制/for.html">
for
</a>
</li>
<li class="chapter " data-level="1.1.1.7.7" data-path="../语言参考/流程控制/foreach.html">
<a href="../语言参考/流程控制/foreach.html">
foreach
</a>
</li>
<li class="chapter " data-level="1.1.1.7.8" data-path="../语言参考/流程控制/switch.html">
<a href="../语言参考/流程控制/switch.html">
switch
</a>
</li>
<li class="chapter " data-level="1.1.1.7.9" data-path="../语言参考/流程控制/break.html">
<a href="../语言参考/流程控制/break.html">
break
</a>
</li>
<li class="chapter " data-level="1.1.1.7.10" data-path="../语言参考/流程控制/continue.html">
<a href="../语言参考/流程控制/continue.html">
continue
</a>
</li>
<li class="chapter " data-level="1.1.1.7.11" data-path="../语言参考/流程控制/流程控制的替代语法.html">
<a href="../语言参考/流程控制/流程控制的替代语法.html">
流程控制的替代语法
</a>
</li>
<li class="chapter " data-level="1.1.1.7.12" data-path="../语言参考/流程控制/declare.html">
<a href="../语言参考/流程控制/declare.html">
declare
</a>
</li>
<li class="chapter " data-level="1.1.1.7.13" data-path="../语言参考/流程控制/return.html">
<a href="../语言参考/流程控制/return.html">
return
</a>
</li>
<li class="chapter " data-level="1.1.1.7.14" data-path="../语言参考/流程控制/require.html">
<a href="../语言参考/流程控制/require.html">
require
</a>
</li>
<li class="chapter " data-level="1.1.1.7.15" data-path="../语言参考/流程控制/include.html">
<a href="../语言参考/流程控制/include.html">
include
</a>
</li>
<li class="chapter " data-level="1.1.1.7.16" data-path="../语言参考/流程控制/require_once.html">
<a href="../语言参考/流程控制/require_once.html">
require_once
</a>
</li>
<li class="chapter " data-level="1.1.1.7.17" data-path="../语言参考/流程控制/include_once.html">
<a href="../语言参考/流程控制/include_once.html">
include_once
</a>
</li>
<li class="chapter " data-level="1.1.1.7.18" data-path="../语言参考/流程控制/goto.html">
<a href="../语言参考/流程控制/goto.html">
goto
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.1.8" data-path="../语言参考/函数.html">
<a href="../语言参考/函数.html">
函数
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.1.8.1" data-path="../语言参考/函数/用户自定义函数.html">
<a href="../语言参考/函数/用户自定义函数.html">
用户自定义函数
</a>
</li>
<li class="chapter " data-level="1.1.1.8.2" data-path="../语言参考/函数/函数的参数.html">
<a href="../语言参考/函数/函数的参数.html">
函数的参数
</a>
</li>
<li class="chapter " data-level="1.1.1.8.3" data-path="../语言参考/函数/返回值.html">
<a href="../语言参考/函数/返回值.html">
返回值
</a>
</li>
<li class="chapter " data-level="1.1.1.8.4" data-path="../语言参考/函数/可变函数.html">
<a href="../语言参考/函数/可变函数.html">
可变函数
</a>
</li>
<li class="chapter " data-level="1.1.1.8.5" data-path="../语言参考/函数/匿名函数.html">
<a href="../语言参考/函数/匿名函数.html">
匿名函数
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.1.9" data-path="../语言参考/类与对象.html">
<a href="../语言参考/类与对象.html">
类与对象
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.1.9.1" data-path="../语言参考/类与对象/基本语法.html">
<a href="../语言参考/类与对象/基本语法.html">
基本语法
</a>
</li>
<li class="chapter " data-level="1.1.1.9.2" data-path="../语言参考/类与对象/属性.html">
<a href="../语言参考/类与对象/属性.html">
属性
</a>
</li>
<li class="chapter " data-level="1.1.1.9.3" data-path="../语言参考/类与对象/类常量.html">
<a href="../语言参考/类与对象/类常量.html">
类常量
</a>
</li>
<li class="chapter " data-level="1.1.1.9.4" data-path="../语言参考/类与对象/类的自动加载.html">
<a href="../语言参考/类与对象/类的自动加载.html">
类的自动加载
</a>
</li>
<li class="chapter " data-level="1.1.1.9.5" data-path="../语言参考/类与对象/构造函数和析构函数.html">
<a href="../语言参考/类与对象/构造函数和析构函数.html">
构造函数和析构函数
</a>
</li>
<li class="chapter " data-level="1.1.1.9.6" data-path="../语言参考/类与对象/访问控制.html">
<a href="../语言参考/类与对象/访问控制.html">
访问控制
</a>
</li>
<li class="chapter " data-level="1.1.1.9.7" data-path="../语言参考/类与对象/对象继承.html">
<a href="../语言参考/类与对象/对象继承.html">
对象继承
</a>
</li>
<li class="chapter " data-level="1.1.1.9.8" data-path="../语言参考/类与对象/范围解析操作符.html">
<a href="../语言参考/类与对象/范围解析操作符.html">
范围解析操作符
</a>
</li>
<li class="chapter " data-level="1.1.1.9.9" data-path="../语言参考/类与对象/Static 关键字.html">
<a href="../语言参考/类与对象/Static 关键字.html">
Static 关键字
</a>
</li>
<li class="chapter " data-level="1.1.1.9.10" data-path="../语言参考/类与对象/抽象类.html">
<a href="../语言参考/类与对象/抽象类.html">
抽象类
</a>
</li>
<li class="chapter " data-level="1.1.1.9.11" data-path="../语言参考/类与对象/对象接口.html">
<a href="../语言参考/类与对象/对象接口.html">
对象接口
</a>
</li>
<li class="chapter " data-level="1.1.1.9.12" data-path="../语言参考/类与对象/Trait.html">
<a href="../语言参考/类与对象/Trait.html">
Trait
</a>
</li>
<li class="chapter " data-level="1.1.1.9.13" data-path="../语言参考/类与对象/匿名类.html">
<a href="../语言参考/类与对象/匿名类.html">
匿名类
</a>
</li>
<li class="chapter " data-level="1.1.1.9.14" data-path="../语言参考/类与对象/重载.html">
<a href="../语言参考/类与对象/重载.html">
重载
</a>
</li>
<li class="chapter " data-level="1.1.1.9.15" data-path="../语言参考/类与对象/遍历对象.html">
<a href="../语言参考/类与对象/遍历对象.html">
遍历对象
</a>
</li>
<li class="chapter " data-level="1.1.1.9.16" data-path="../语言参考/类与对象/魔术方法.html">
<a href="../语言参考/类与对象/魔术方法.html">
魔术方法
</a>
</li>
<li class="chapter " data-level="1.1.1.9.17" data-path="../语言参考/类与对象/Final 关键字.html">
<a href="../语言参考/类与对象/Final 关键字.html">
Final 关键字
</a>
</li>
<li class="chapter " data-level="1.1.1.9.18" data-path="../语言参考/类与对象/对象复制.html">
<a href="../语言参考/类与对象/对象复制.html">
对象复制
</a>
</li>
<li class="chapter " data-level="1.1.1.9.19" data-path="../语言参考/类与对象/对象比较.html">
<a href="../语言参考/类与对象/对象比较.html">
对象比较
</a>
</li>
<li class="chapter " data-level="1.1.1.9.20" data-path="../语言参考/类与对象/类型约束.html">
<a href="../语言参考/类与对象/类型约束.html">
类型约束
</a>
</li>
<li class="chapter " data-level="1.1.1.9.21" data-path="../语言参考/类与对象/后期静态绑定.html">
<a href="../语言参考/类与对象/后期静态绑定.html">
后期静态绑定
</a>
</li>
<li class="chapter " data-level="1.1.1.9.22" data-path="../语言参考/类与对象/对象和引用.html">
<a href="../语言参考/类与对象/对象和引用.html">
对象和引用
</a>
</li>
<li class="chapter " data-level="1.1.1.9.23" data-path="../语言参考/类与对象/对象序列化.html">
<a href="../语言参考/类与对象/对象序列化.html">
对象序列化
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.1.10" data-path="../语言参考/命名空间.html">
<a href="../语言参考/命名空间.html">
命名空间
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.1.10.1" data-path="../语言参考/命名空间/基本语法.html">
<a href="../语言参考/命名空间/基本语法.html">
基本语法
</a>
</li>
<li class="chapter " data-level="1.1.1.10.2" data-path="../语言参考/命名空间/定义子命名空间.html">
<a href="../语言参考/命名空间/定义子命名空间.html">
定义子命名空间
</a>
</li>
<li class="chapter " data-level="1.1.1.10.3" data-path="../语言参考/命名空间/在同一个文件中定义多个命名空间.html">
<a href="../语言参考/命名空间/在同一个文件中定义多个命名空间.html">
在同一个文件中定义多个命名空间
</a>
</li>
<li class="chapter " data-level="1.1.1.10.4" data-path="../语言参考/命名空间/使用命名空间 - 基础.html">
<a href="../语言参考/命名空间/使用命名空间 - 基础.html">
使用命名空间 - 基础
</a>
</li>
<li class="chapter " data-level="1.1.1.10.5" data-path="../语言参考/命名空间/命名空间和动态语言特征.html">
<a href="../语言参考/命名空间/命名空间和动态语言特征.html">
命名空间和动态语言特征
</a>
</li>
<li class="chapter " data-level="1.1.1.10.6" data-path="../语言参考/命名空间/namespace 关键字和 __NAMESPACE__ 魔术常量.html">
<a href="../语言参考/命名空间/namespace 关键字和 __NAMESPACE__ 魔术常量.html">
namespace 关键字和 __NAMESPACE__ 魔术常量
</a>
</li>
<li class="chapter " data-level="1.1.1.10.7" data-path="../语言参考/命名空间/使用命名空间 - 别名和导入.html">
<a href="../语言参考/命名空间/使用命名空间 - 别名和导入.html">
使用命名空间 - 别名和导入
</a>
</li>
<li class="chapter " data-level="1.1.1.10.8" data-path="../语言参考/命名空间/全局空间.html">
<a href="../语言参考/命名空间/全局空间.html">
全局空间
</a>
</li>
<li class="chapter " data-level="1.1.1.10.9" data-path="../语言参考/命名空间/使用命名空间 - 后备全局函数和常量.html">
<a href="../语言参考/命名空间/使用命名空间 - 后备全局函数和常量.html">
使用命名空间 - 后备全局函数和常量
</a>
</li>
<li class="chapter " data-level="1.1.1.10.10" data-path="../语言参考/命名空间/名称解析规则.html">
<a href="../语言参考/命名空间/名称解析规则.html">
名称解析规则
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.1.11" data-path="../语言参考/Errors.html">
<a href="../语言参考/Errors.html">
Errors
</a>
</li>
<li class="chapter " data-level="1.1.1.12" data-path="../语言参考/异常处理.html">
<a href="../语言参考/异常处理.html">
异常处理
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.1.12.1" data-path="../语言参考/异常处理/基本语法.html">
<a href="../语言参考/异常处理/基本语法.html">
基本语法
</a>
</li>
<li class="chapter " data-level="1.1.1.12.2" data-path="../语言参考/异常处理/扩展 PHP 内置的异常处理类.html">
<a href="../语言参考/异常处理/扩展 PHP 内置的异常处理类.html">
扩展 PHP 内置的异常处理类
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.1.13" data-path="../语言参考/生成器.html">
<a href="../语言参考/生成器.html">
生成器
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.1.13.1" data-path="../语言参考/生成器/生成器总览.html">
<a href="../语言参考/生成器/生成器总览.html">
生成器总览
</a>
</li>
<li class="chapter " data-level="1.1.1.13.2" data-path="../语言参考/生成器/生成器语法.html">
<a href="../语言参考/生成器/生成器语法.html">
生成器语法
</a>
</li>
<li class="chapter " data-level="1.1.1.13.3" data-path="../语言参考/生成器/生成器与 Iterator 对象比较.html">
<a href="../语言参考/生成器/生成器与 Iterator 对象比较.html">
生成器与 Iterator 对象比较
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.1.14" data-path="../语言参考/引用的解释.html">
<a href="../语言参考/引用的解释.html">
引用的解释
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.1.14.1" data-path="../语言参考/引用的解释/引用是什么.html">
<a href="../语言参考/引用的解释/引用是什么.html">
引用是什么
</a>
</li>
<li class="chapter " data-level="1.1.1.14.2" data-path="../语言参考/引用的解释/引用不是什么.html">
<a href="../语言参考/引用的解释/引用不是什么.html">
引用不是什么
</a>
</li>
<li class="chapter " data-level="1.1.1.14.3" data-path="../语言参考/引用的解释/引用做什么.html">
<a href="../语言参考/引用的解释/引用做什么.html">
引用做什么
</a>
</li>
<li class="chapter " data-level="1.1.1.14.4" data-path="../语言参考/引用的解释/引用传递.html">
<a href="../语言参考/引用的解释/引用传递.html">
引用传递
</a>
</li>
<li class="chapter " data-level="1.1.1.14.5" data-path="../语言参考/引用的解释/引用返回.html">
<a href="../语言参考/引用的解释/引用返回.html">
引用返回
</a>
</li>
<li class="chapter " data-level="1.1.1.14.6" data-path="../语言参考/引用的解释/取消引用.html">
<a href="../语言参考/引用的解释/取消引用.html">
取消引用
</a>
</li>
<li class="chapter " data-level="1.1.1.14.7" data-path="../语言参考/引用的解释/引用定位.html">
<a href="../语言参考/引用的解释/引用定位.html">
引用定位
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.1.15" data-path="../语言参考/预定义变量.html">
<a href="../语言参考/预定义变量.html">
预定义变量
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.1.15.1" data-path="../语言参考/预定义变量/超全局变量.html">
<a href="../语言参考/预定义变量/超全局变量.html">
超全局变量
</a>
</li>
<li class="chapter " data-level="1.1.1.15.2" data-path="../语言参考/预定义变量/$GLOBALS.html">
<a href="../语言参考/预定义变量/$GLOBALS.html">
$GLOBALS
</a>
</li>
<li class="chapter " data-level="1.1.1.15.3" data-path="../语言参考/预定义变量/$_GET.html">
<a href="../语言参考/预定义变量/$_GET.html">
$_GET
</a>
</li>
<li class="chapter " data-level="1.1.1.15.4" data-path="../语言参考/预定义变量/$_POST.html">
<a href="../语言参考/预定义变量/$_POST.html">
$_POST
</a>
</li>
<li class="chapter " data-level="1.1.1.15.5" data-path="../语言参考/预定义变量/$_COOKIE.html">
<a href="../语言参考/预定义变量/$_COOKIE.html">
$_COOKIE
</a>
</li>
<li class="chapter " data-level="1.1.1.15.6" data-path="../语言参考/预定义变量/$_REQUEST.html">
<a href="../语言参考/预定义变量/$_REQUEST.html">
$_REQUEST
</a>
</li>
<li class="chapter " data-level="1.1.1.15.7" data-path="../语言参考/预定义变量/$_FILES.html">
<a href="../语言参考/预定义变量/$_FILES.html">
$_FILES
</a>
</li>
<li class="chapter " data-level="1.1.1.15.8" data-path="../语言参考/预定义变量/$_SESSION.html">
<a href="../语言参考/预定义变量/$_SESSION.html">
$_SESSION
</a>
</li>
<li class="chapter " data-level="1.1.1.15.9" data-path="../语言参考/预定义变量/$_SERVER.html">
<a href="../语言参考/预定义变量/$_SERVER.html">
$_SERVER
</a>
</li>
<li class="chapter " data-level="1.1.1.15.10" data-path="../语言参考/预定义变量/$_ENV.html">
<a href="../语言参考/预定义变量/$_ENV.html">
$_ENV
</a>
</li>
<li class="chapter " data-level="1.1.1.15.11" data-path="../语言参考/预定义变量/$http_response_header.html">
<a href="../语言参考/预定义变量/$http_response_header.html">
$http_response_header
</a>
</li>
<li class="chapter " data-level="1.1.1.15.12" data-path="../语言参考/预定义变量/$argc.html">
<a href="../语言参考/预定义变量/$argc.html">
$argc
</a>
</li>
<li class="chapter " data-level="1.1.1.15.13" data-path="../语言参考/预定义变量/$argv.html">
<a href="../语言参考/预定义变量/$argv.html">
$argv
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.1.16" data-path="../语言参考/预定义异常.html">
<a href="../语言参考/预定义异常.html">
预定义异常
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.1.16.1" data-path="../语言参考/预定义异常/Exception.html">
<a href="../语言参考/预定义异常/Exception.html">
Exception
</a>
</li>
<li class="chapter " data-level="1.1.1.16.2" data-path="../语言参考/预定义异常/ErrorException.html">
<a href="../语言参考/预定义异常/ErrorException.html">
ErrorException
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.1.17" data-path="../语言参考/预定义接口.html">
<a href="../语言参考/预定义接口.html">
预定义接口
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.1.17.1" data-path="../语言参考/预定义接口/Traversable.html">
<a href="../语言参考/预定义接口/Traversable.html">
Traversable
</a>
</li>
<li class="chapter " data-level="1.1.1.17.2" data-path="../语言参考/预定义接口/Iterator.html">
<a href="../语言参考/预定义接口/Iterator.html">
Iterator
</a>
</li>
<li class="chapter " data-level="1.1.1.17.3" data-path="../语言参考/预定义接口/IteratorAggregate.html">
<a href="../语言参考/预定义接口/IteratorAggregate.html">
IteratorAggregate
</a>
</li>
<li class="chapter " data-level="1.1.1.17.4" data-path="../语言参考/预定义接口/ArrayAccess.html">
<a href="../语言参考/预定义接口/ArrayAccess.html">
ArrayAccess
</a>
</li>
<li class="chapter " data-level="1.1.1.17.5" data-path="../语言参考/预定义接口/Serializable.html">
<a href="../语言参考/预定义接口/Serializable.html">
Serializable
</a>
</li>
<li class="chapter " data-level="1.1.1.17.6" data-path="../语言参考/预定义接口/Closure.html">
<a href="../语言参考/预定义接口/Closure.html">
Closure
</a>
</li>
<li class="chapter " data-level="1.1.1.17.7" data-path="../语言参考/预定义接口/Generator.html">
<a href="../语言参考/预定义接口/Generator.html">
Generator
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.1.18" data-path="../语言参考/上下文选项和参数.html">
<a href="../语言参考/上下文选项和参数.html">
上下文选项和参数
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.1.18.1" data-path="../语言参考/上下文选项和参数/套接字上下文选项.html">
<a href="../语言参考/上下文选项和参数/套接字上下文选项.html">
套接字上下文选项
</a>
</li>
<li class="chapter " data-level="1.1.1.18.2" data-path="../语言参考/上下文选项和参数/HTTP 上下文选项.html">
<a href="../语言参考/上下文选项和参数/HTTP 上下文选项.html">
HTTP 上下文选项
</a>
</li>
<li class="chapter " data-level="1.1.1.18.3" data-path="../语言参考/上下文选项和参数/FTP 上下文选项.html">
<a href="../语言参考/上下文选项和参数/FTP 上下文选项.html">
FTP 上下文选项
</a>
</li>
<li class="chapter " data-level="1.1.1.18.4" data-path="../语言参考/上下文选项和参数/SSL 上下文选项.html">
<a href="../语言参考/上下文选项和参数/SSL 上下文选项.html">
SSL 上下文选项
</a>
</li>
<li class="chapter " data-level="1.1.1.18.5" data-path="../语言参考/上下文选项和参数/CURL 上下文选项.html">
<a href="../语言参考/上下文选项和参数/CURL 上下文选项.html">
CURL 上下文选项
</a>
</li>
<li class="chapter " data-level="1.1.1.18.6" data-path="../语言参考/上下文选项和参数/Phar 上下文选项.html">
<a href="../语言参考/上下文选项和参数/Phar 上下文选项.html">
Phar 上下文选项
</a>
</li>
<li class="chapter " data-level="1.1.1.18.7" data-path="../语言参考/上下文选项和参数/MongoDB 上下文选项.html">
<a href="../语言参考/上下文选项和参数/MongoDB 上下文选项.html">
MongoDB 上下文选项
</a>
</li>
<li class="chapter " data-level="1.1.1.18.8" data-path="../语言参考/上下文选项和参数/Context 参数.html">
<a href="../语言参考/上下文选项和参数/Context 参数.html">
Context 参数
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.1.19" data-path="../语言参考/支持的协议和封装协议.html">
<a href="../语言参考/支持的协议和封装协议.html">
支持的协议和封装协议
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.1.19.1" data-path="../语言参考/支持的协议和封装协议/file.html">
<a href="../语言参考/支持的协议和封装协议/file.html">
file://
</a>
</li>
<li class="chapter " data-level="1.1.1.19.2" data-path="../语言参考/支持的协议和封装协议/http.html">
<a href="../语言参考/支持的协议和封装协议/http.html">
http://
</a>
</li>
<li class="chapter " data-level="1.1.1.19.3" data-path="../语言参考/支持的协议和封装协议/ftp.html">
<a href="../语言参考/支持的协议和封装协议/ftp.html">
ftp://
</a>
</li>
<li class="chapter " data-level="1.1.1.19.4" data-path="../语言参考/支持的协议和封装协议/php.html">
<a href="../语言参考/支持的协议和封装协议/php.html">
php://
</a>
</li>
<li class="chapter " data-level="1.1.1.19.5" data-path="../语言参考/支持的协议和封装协议/zlib.html">
<a href="../语言参考/支持的协议和封装协议/zlib.html">
zlib://
</a>
</li>
<li class="chapter " data-level="1.1.1.19.6" data-path="../语言参考/支持的协议和封装协议/data.html">
<a href="../语言参考/支持的协议和封装协议/data.html">
data://
</a>
</li>
<li class="chapter " data-level="1.1.1.19.7" data-path="../语言参考/支持的协议和封装协议/global.html">
<a href="../语言参考/支持的协议和封装协议/global.html">
global://
</a>
</li>
<li class="chapter " data-level="1.1.1.19.8" data-path="../语言参考/支持的协议和封装协议/phar.html">
<a href="../语言参考/支持的协议和封装协议/phar.html">
phar://
</a>
</li>
<li class="chapter " data-level="1.1.1.19.9" data-path="../语言参考/支持的协议和封装协议/ssh2.html">
<a href="../语言参考/支持的协议和封装协议/ssh2.html">
ssh2://
</a>
</li>
<li class="chapter " data-level="1.1.1.19.10" data-path="../语言参考/支持的协议和封装协议/rar.html">
<a href="../语言参考/支持的协议和封装协议/rar.html">
rar://
</a>
</li>
<li class="chapter " data-level="1.1.1.19.11" data-path="../语言参考/支持的协议和封装协议/ogg.html">
<a href="../语言参考/支持的协议和封装协议/ogg.html">
ogg://
</a>
</li>
<li class="chapter " data-level="1.1.1.19.12" data-path="../语言参考/支持的协议和封装协议/expect.html">
<a href="../语言参考/支持的协议和封装协议/expect.html">
expect://
</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.2" data-path="../函数参考.html">
<a href="../函数参考.html">
函数参考
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.2.1" data-path="../函数参考/影响 PHP 行为的扩展.html">
<a href="../函数参考/影响 PHP 行为的扩展.html">
影响 PHP 行为的扩展
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.2.1.1" data-path="../函数参考/影响 PHP 行为的扩展/错误处理和日志记录.html">
<a href="../函数参考/影响 PHP 行为的扩展/错误处理和日志记录.html">
错误处理和日志记录
</a>
</li>
<li class="chapter " data-level="1.1.2.1.2" data-path="../函数参考/影响 PHP 行为的扩展/输出缓冲控制.html">
<a href="../函数参考/影响 PHP 行为的扩展/输出缓冲控制.html">
输出缓冲控制
</a>
</li>
<li class="chapter " data-level="1.1.2.1.3" data-path="../函数参考/影响 PHP 行为的扩展/PHP 选项和信息.html">
<a href="../函数参考/影响 PHP 行为的扩展/PHP 选项和信息.html">
PHP 选项和信息
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.2.2" data-path="../函数参考/加密扩展.html">
<a href="../函数参考/加密扩展.html">
加密扩展
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.2.2.1" data-path="../函数参考/加密扩展/Hash.html">
<a href="../函数参考/加密扩展/Hash.html">
Hash
</a>
</li>
<li class="chapter " data-level="1.1.2.2.2" data-path="../函数参考/加密扩展/OpenSSL.html">
<a href="../函数参考/加密扩展/OpenSSL.html">
OpenSSL
</a>
</li>
<li class="chapter " data-level="1.1.2.2.3" data-path="../函数参考/加密扩展/密码散列算法.html">
<a href="../函数参考/加密扩展/密码散列算法.html">
密码散列算法
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.2.3" data-path="../函数参考/数据库扩展.html">
<a href="../函数参考/数据库扩展.html">
数据库扩展
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.2.3.1" data-path="../函数参考/数据库扩展/数据库抽象层.html">
<a href="../函数参考/数据库扩展/数据库抽象层.html">
数据库抽象层
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.2.3.1.1" data-path="../函数参考/数据库扩展/数据库抽象层/PDO.html">
<a href="../函数参考/数据库扩展/数据库抽象层/PDO.html">
PDO
</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.2.4" data-path="../函数参考/日期与时间相关扩展.html">
<a href="../函数参考/日期与时间相关扩展.html">
日期与时间相关扩展
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.2.4.1" data-path="../函数参考/日期与时间相关扩展/日期与时间.html">
<a href="../函数参考/日期与时间相关扩展/日期与时间.html">
日期与时间
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.2.5" data-path="../函数参考/文件系统相关扩展.html">
<a href="../函数参考/文件系统相关扩展.html">
文件系统相关扩展
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.2.5.1" data-path="../函数参考/文件系统相关扩展/目录.html">
<a href="../函数参考/文件系统相关扩展/目录.html">
目录
</a>
</li>
<li class="chapter " data-level="1.1.2.5.2" data-path="../函数参考/文件系统相关扩展/文件系统.html">
<a href="../函数参考/文件系统相关扩展/文件系统.html">
文件系统
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.2.6" data-path="../函数参考/国际化与字符编码支持.html">
<a href="../函数参考/国际化与字符编码支持.html">
国际化与字符编码支持
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.2.6.1" data-path="../函数参考/国际化与字符编码支持/iconv.html">
<a href="../函数参考/国际化与字符编码支持/iconv.html">
iconv
</a>
</li>
<li class="chapter " data-level="1.1.2.6.2" data-path="../函数参考/国际化与字符编码支持/多字节字符串.html">
<a href="../函数参考/国际化与字符编码支持/多字节字符串.html">
多字节字符串
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.2.7" data-path="../函数参考/图像生成和处理.html">
<a href="../函数参考/图像生成和处理.html">
图像生成和处理
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.2.7.1" data-path="../函数参考/图像生成和处理/GD.html">
<a href="../函数参考/图像生成和处理/GD.html">
GD
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.2.8" data-path="../函数参考/邮件相关扩展.html">
<a href="../函数参考/邮件相关扩展.html">
邮件相关扩展
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.2.8.1" data-path="../函数参考/邮件相关扩展/邮件.html">
<a href="../函数参考/邮件相关扩展/邮件.html">
邮件
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.2.9" data-path="../函数参考/数学扩展.html">
<a href="../函数参考/数学扩展.html">
数学扩展
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.2.9.1" data-path="../函数参考/数学扩展/任意精度数学.html">
<a href="../函数参考/数学扩展/任意精度数学.html">
任意精度数学
</a>
</li>
<li class="chapter " data-level="1.1.2.9.2" data-path="../函数参考/数学扩展/数学.html">
<a href="../函数参考/数学扩展/数学.html">
数学
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.2.10" data-path="../函数参考/进程控制扩展.html">
<a href="../函数参考/进程控制扩展.html">
进程控制扩展
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.2.10.1" data-path="../函数参考/进程控制扩展/程序执行.html">
<a href="../函数参考/进程控制扩展/程序执行.html">
程序执行
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.2.11" data-path="../函数参考/其他基本扩展.html">
<a href="../函数参考/其他基本扩展.html">
其他基本扩展
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.2.11.1" data-path="../函数参考/其他基本扩展/JSON.html">
<a href="../函数参考/其他基本扩展/JSON.html">
JSON
</a>
</li>
<li class="chapter " data-level="1.1.2.11.2" data-path="../函数参考/其他基本扩展/杂项.html">
<a href="../函数参考/其他基本扩展/杂项.html">
杂项
</a>
</li>
<li class="chapter " data-level="1.1.2.11.3" data-path="../函数参考/其他基本扩展/PHP 标准库.html">
<a href="../函数参考/其他基本扩展/PHP 标准库.html">
PHP 标准库
</a>
</li>
<li class="chapter " data-level="1.1.2.11.4" data-path="../函数参考/其他基本扩展/Streams.html">
<a href="../函数参考/其他基本扩展/Streams.html">
Streams
</a>
</li>
<li class="chapter " data-level="1.1.2.11.5" data-path="../函数参考/其他基本扩展/Tokenizer.html">
<a href="../函数参考/其他基本扩展/Tokenizer.html">
Tokenizer
</a>
</li>
<li class="chapter " data-level="1.1.2.11.6" data-path="../函数参考/其他基本扩展/URL.html">
<a href="../函数参考/其他基本扩展/URL.html">
URL
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.2.12" data-path="../函数参考/其他服务.html">
<a href="../函数参考/其他服务.html">
其他服务
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.2.12.1" data-path="../函数参考/其他服务/cURL.html">
<a href="../函数参考/其他服务/cURL.html">
cURL
</a>
</li>
<li class="chapter " data-level="1.1.2.12.2" data-path="../函数参考/其他服务/网络.html">
<a href="../函数参考/其他服务/网络.html">
网络
</a>
</li>
<li class="chapter " data-level="1.1.2.12.3" data-path="../函数参考/其他服务/Sockets.html">
<a href="../函数参考/其他服务/Sockets.html">
Sockets
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.2.13" data-path="../函数参考/Session 扩展.html">
<a href="../函数参考/Session 扩展.html">
Session 扩展
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.2.13.1" data-path="../函数参考/Session 扩展/Session.html">
<a href="../函数参考/Session 扩展/Session.html">
Session
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.2.14" data-path="../函数参考/文本处理.html">
<a href="../函数参考/文本处理.html">
文本处理
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.2.14.1" data-path="../函数参考/文本处理/正则表达式.html">
<a href="../函数参考/文本处理/正则表达式.html">
正则表达式
</a>
</li>
<li class="chapter " data-level="1.1.2.14.2" data-path="../函数参考/文本处理/字符串.html">
<a href="../函数参考/文本处理/字符串.html">
字符串
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.2.15" data-path="../函数参考/变量与类型相关扩展.html">
<a href="../函数参考/变量与类型相关扩展.html">
变量与类型相关扩展
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.2.15.1" data-path="../函数参考/变量与类型相关扩展/数组.html">
<a href="../函数参考/变量与类型相关扩展/数组.html">
数组
</a>
</li>
<li class="chapter " data-level="1.1.2.15.2" data-path="../函数参考/变量与类型相关扩展/类与对象.html">
<a href="../函数参考/变量与类型相关扩展/类与对象.html">
类与对象
</a>
</li>
<li class="chapter " data-level="1.1.2.15.3" data-path="../函数参考/变量与类型相关扩展/字符类型检测.html">
<a href="../函数参考/变量与类型相关扩展/字符类型检测.html">
字符类型检测
</a>
</li>
<li class="chapter " data-level="1.1.2.15.4" data-path="../函数参考/变量与类型相关扩展/过滤器.html">
<a href="../函数参考/变量与类型相关扩展/过滤器.html">
过滤器
</a>
</li>
<li class="chapter " data-level="1.1.2.15.5" data-path="../函数参考/变量与类型相关扩展/函数处理.html">
<a href="../函数参考/变量与类型相关扩展/函数处理.html">
函数处理
</a>
</li>
<li class="chapter " data-level="1.1.2.15.6" data-path="../函数参考/变量与类型相关扩展/反射.html">
<a href="../函数参考/变量与类型相关扩展/反射.html">
反射
</a>
</li>
<li class="chapter " data-level="1.1.2.15.7" data-path="../函数参考/变量与类型相关扩展/变量.html">
<a href="../函数参考/变量与类型相关扩展/变量.html">
变量
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.2.16" data-path="../函数参考/XML 操作.html">
<a href="../函数参考/XML 操作.html">
XML 操作
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.2.16.1" data-path="../函数参考/XML 操作/SimpleXML.html">
<a href="../函数参考/XML 操作/SimpleXML.html">
SimpleXML
</a>
</li>
<li class="chapter " data-level="1.1.2.16.2" data-path="../函数参考/XML 操作/XML 解析器.html">
<a href="../函数参考/XML 操作/XML 解析器.html">
XML 解析器
</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.3" data-path="../会话和安全.html">
<a href="../会话和安全.html">
会话和安全
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.3.1" data-path="../会话和安全/会话管理基础.html">
<a href="../会话和安全/会话管理基础.html">
会话管理基础
</a>
</li>
<li class="chapter " data-level="1.1.3.2" data-path="../会话和安全/和会话安全相关的配置项.html">
<a href="../会话和安全/和会话安全相关的配置项.html">
和会话安全相关的配置项
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.4" data-path="../PHP 的命令行模式.html">
<a href="../PHP 的命令行模式.html">
PHP 的命令行模式
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.4.1" data-path="../PHP 的命令行模式/内置的 Web 服务器.html">
<a href="../PHP 的命令行模式/内置的 Web 服务器.html">
内置的 Web 服务器
</a>
</li>
<li class="chapter " data-level="1.1.4.2" data-path="../PHP 的命令行模式/和命令行模式相关的配置项.html">
<a href="../PHP 的命令行模式/和命令行模式相关的配置项.html">
和命令行模式相关的配置项
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.5" data-path="../垃圾回收机制.html">
<a href="../垃圾回收机制.html">
垃圾回收机制
</a>
</li>
<li class="chapter " data-level="1.1.6" data-path="../PHP 类型比较表.html">
<a href="../PHP 类型比较表.html">
PHP 类型比较表
</a>
</li>
<li class="chapter " data-level="1.1.7" data-path="../PSR.html">
<a href="../PSR.html">
PSR
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.7.1" data-path="PSR-1 基础编码规范.html">
<a href="PSR-1 基础编码规范.html">
PSR-1 基础编码规范
</a>
</li>
<li class="chapter " data-level="1.1.7.2" data-path="PSR-4 自动加载规范.html">
<a href="PSR-4 自动加载规范.html">
PSR-4 自动加载规范
</a>
</li>
<li class="chapter active" data-level="1.1.7.3" data-path="PSR-12 编码规范扩充.html">
<a href="PSR-12 编码规范扩充.html">
PSR-12 编码规范扩充
</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="divider"></li>
<li>
<a href="https://www.gitbook.com" target="blank" class="gitbook-link">
本书使用 GitBook 发布
</a>
</li>
</ul>
</nav>
</div>
<div class="book-body">
<div class="body-inner">
<div class="book-header" role="navigation">
<!-- Title -->
<h1>
<i class="fa fa-circle-o-notch fa-spin"></i>
<a href="../.." >PSR-12 编码规范扩充</a>
</h1>
</div>
<div class="page-wrapper" tabindex="-1" role="main">
<div class="page-inner">
<div id="book-search-results">
<div class="search-noresults">
<section class="normal markdown-section">
<h1 id="psr-12-编码规范扩充">PSR-12 编码规范扩充</h1>
<ul>
<li><a href="#总则">总则</a><ul>
<li><a href="#基本编码准则">基本编码准则</a></li>
<li><a href="#文件">文件</a></li>
<li><a href="#行">行</a></li>
<li><a href="#缩进">缩进</a></li>
<li><a href="#关键字和类型">关键字和类型</a></li>
</ul>
</li>
<li><a href="#声明和命名空间以及导入">声明和命名空间以及导入</a></li>
<li><a href="#类和属性和方法">类和属性和方法</a><ul>
<li><a href="#继承和实现">继承和实现</a></li>
<li><a href="#使用-trait">使用 Trait</a></li>
<li><a href="#属性和常量">属性和常量</a></li>
<li><a href="#方法和函数">方法和函数</a></li>
<li><a href="#方法和函数参数">方法和函数参数</a></li>
<li><a href="#abstract-和-final-和-static">abstract 和 final 和 static</a></li>
<li><a href="#方法和函数的调用">方法和函数的调用</a></li>
</ul>
</li>
<li><a href="#流程控制">流程控制</a><ul>
<li><a href="#if-和-elseif-和-else">if 和 elseif 和 else</a></li>
<li><a href="#switch-和-case">switch 和 case</a></li>
<li><a href="#while-和-do-while">while 和 do-while</a></li>
<li><a href="#for">for</a></li>
<li><a href="#foreach">foreach</a></li>
<li><a href="#try-和-catch-和-finally">try 和 catch 和 finally</a></li>
</ul>
</li>
<li><a href="#运算符">运算符</a><ul>
<li><a href="#一元运算符">一元运算符</a></li>
<li><a href="#二元运算符">二元运算符</a></li>
<li><a href="#三元运算符">三元运算符</a></li>
</ul>
</li>
<li><a href="#闭包">闭包</a></li>
<li><a href="#匿名类">匿名类</a></li>
</ul>
<h2 id="总则">总则</h2>
<h3 id="基本编码准则">基本编码准则</h3>
<blockquote>
<p>代码 <strong>必须</strong> 遵循 PSR-1 中的所有规范。</p>
<p>PSR-1 中的术语 <code>StudlyCaps</code> <strong>必须</strong> 解释为 <code>PascalCase</code> ,其中每个单词的首字母大写,包括首字母。</p>
</blockquote>
<h3 id="文件">文件</h3>
<blockquote>
<p>所有 PHP 文件 <strong>必须</strong> 使用 Unix 的 <code>LF</code> 作为行的结束符。</p>
<p>所有 PHP 文件 <strong>必须</strong> 以非空行结尾,并且使用 Unix 的 <code>LF</code> 结尾。</p>
<p>在仅包含 PHP 代码的文件中, <strong>必须</strong> 省略结尾的 <code>?></code> 结束标签。</p>
</blockquote>
<h3 id="行">行</h3>
<blockquote>
<p>行的长度 <strong>一定不可</strong> 有硬性的约束。</p>
<p>行的长度的软性约束 <strong>必须</strong> 要限制在 120 个字符以内。</p>
<p>每行 <strong>不该</strong> 多于 80 个字符,大于 80 字符的行 <strong>应该</strong> 折成多行。</p>
<p>行尾 <strong>一定不可</strong> 有多余的空格符。</p>
<p><strong>可以</strong> 添加空行以提高可读性并指示相关的代码块,除非明确禁止。</p>
<p>每行 <strong>一定不可</strong> 存在多于一条语句。</p>
</blockquote>
<h3 id="缩进">缩进</h3>
<blockquote>
<p>代码 <strong>必须</strong> 使用 4 个空格符的缩进, <strong>一定不可</strong> 用 Tab 键。</p>
</blockquote>
<h3 id="关键字和类型">关键字和类型</h3>
<blockquote>
<p>PHP 所有关键字 <strong>必须</strong> 全部小写。</p>
<p>PHP 未来版本中新添加的所有关键字和类型也都 <strong>必须</strong> 使用小写。</p>
<p>类型关键字 <strong>必须</strong> 使用缩写,使用 <code>bool</code> 而不是 <code>boolean</code> ,使用 <code>int</code> 而不是 <code>integer</code> 等等。</p>
</blockquote>
<h2 id="声明和命名空间以及导入">声明和命名空间以及导入</h2>
<blockquote>
<p>一个 PHP 文件的头部 <strong>可能</strong> 会包含多个块,如果包含多个块,则每个块都 <strong>必须</strong> 用空白行和其他块分隔,并且同样的块内 <strong>不能</strong> 包含空白行。</p>
<p>所有的块都 <strong>必须</strong> 按照下面的顺序排列,如果不存在该块则忽略。</p>
<ul>
<li>PHP 文件开始标签 <code><?php</code></li>
<li>文件级文档块</li>
<li>一个或多个声明语句</li>
<li>命名空间声明语句</li>
<li>一个或多个基于类的 <code>use</code> 声明语句</li>
<li>一个或多个基于方法的 <code>use</code> 声明语句</li>
<li>一个或多个基于常量的 <code>use</code> 声明语句</li>
<li>其余代码</li>
</ul>
</blockquote>
<pre class="language-"><code class="lang-php"><span class="token delimiter important"><?php</span>
<span class="token keyword">declare</span><span class="token punctuation">(</span>strict_types<span class="token operator">=</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">namespace</span> <span class="token package">Vendor<span class="token punctuation">\</span>Package</span><span class="token punctuation">;</span>
<span class="token keyword">use</span> <span class="token package">Vendor<span class="token punctuation">\</span>Package<span class="token punctuation">\</span>ClassA</span> <span class="token keyword">as</span> <span class="token constant">A</span><span class="token punctuation">;</span>
<span class="token keyword">use</span> <span class="token package">Vendor<span class="token punctuation">\</span>Package<span class="token punctuation">\</span>ClassB</span><span class="token punctuation">;</span>
<span class="token keyword">use</span> <span class="token package">Vendor<span class="token punctuation">\</span>Package<span class="token punctuation">\</span>ClassC</span> <span class="token keyword">as</span> <span class="token constant">C</span><span class="token punctuation">;</span>
<span class="token keyword">use</span> <span class="token package">function</span> Vendor\<span class="token package">Package<span class="token punctuation">\</span>functionA</span><span class="token punctuation">;</span>
<span class="token keyword">use</span> <span class="token package">function</span> Vendor\<span class="token package">Package<span class="token punctuation">\</span>functionB</span><span class="token punctuation">;</span>
<span class="token keyword">use</span> <span class="token package">function</span> Vendor\<span class="token package">Package<span class="token punctuation">\</span>functionC</span><span class="token punctuation">;</span>
<span class="token keyword">use</span> <span class="token package">const</span> Vendor\<span class="token package">Package<span class="token punctuation">\</span>CONSTANT_A</span><span class="token punctuation">;</span>
<span class="token keyword">use</span> <span class="token package">const</span> Vendor\<span class="token package">Package<span class="token punctuation">\</span>CONSTANT_B</span><span class="token punctuation">;</span>
<span class="token keyword">use</span> <span class="token package">const</span> Vendor\<span class="token package">Package<span class="token punctuation">\</span>CONSTANT_C</span><span class="token punctuation">;</span>
<span class="token keyword">class</span> <span class="token class-name">ClassName</span>
<span class="token punctuation">{</span>
<span class="token comment">//</span>
<span class="token punctuation">}</span>
</code></pre>
<blockquote>
<p>当希望在 PHP 代码外部包含标记的文件中声明严格类型时打开和关闭标签,声明 <strong>必须</strong> 写在文件的第一行,并且包含在第一个开始的 PHP 标签中。</p>
</blockquote>
<pre class="language-"><code class="lang-php"><span class="token delimiter important"><?php</span> <span class="token keyword">declare</span><span class="token punctuation">(</span>strict_types<span class="token operator">=</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token operator">?</span><span class="token operator">></span>
<span class="token operator"><</span><span class="token operator">!</span><span class="token constant">DOCTYPE</span> html<span class="token operator">></span>
<span class="token operator"><</span>html<span class="token operator">></span>
<span class="token operator"><</span>head<span class="token operator">></span>
<span class="token operator"><</span><span class="token operator">/</span>head<span class="token operator">></span>
<span class="token operator"><</span>body<span class="token operator">></span>
<span class="token operator"><</span><span class="token operator">?</span>php
<span class="token comment">//</span>
<span class="token operator">?</span><span class="token operator">></span>
<span class="token operator"><</span><span class="token operator">/</span>body<span class="token operator">></span>
<span class="token operator"><</span><span class="token operator">/</span>html<span class="token operator">></span>
</code></pre>
<blockquote>
<p>声明语句中 <strong>不能</strong> 包含空格。</p>
</blockquote>
<pre class="language-"><code class="lang-php"><span class="token delimiter important"><?php</span>
<span class="token keyword">declare</span><span class="token punctuation">(</span>ticks<span class="token operator">=</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre>
<h2 id="类和属性和方法">类和属性和方法</h2>
<blockquote>
<p>任何注释和语句 <strong>一定不可</strong> 跟在其右花括号后的同一行。</p>
<p>当实例化一个类时,后面的圆括号 <strong>必须</strong> 写出来,即使没有参数传进其构造函数。</p>
</blockquote>
<pre class="language-"><code class="lang-php"><span class="token delimiter important"><?php</span>
<span class="token keyword">new</span> <span class="token class-name">Foo</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre>
<h3 id="继承和实现">继承和实现</h3>
<blockquote>
<p>关键字 <code>extends</code> 和 <code>implements</code> <strong>必须</strong> 写在类名称的同一行。</p>
<p>类的左花括号 <strong>必须</strong> 另起一行,右花括号 <strong>必须</strong> 跟在类主体的下一行。</p>
<p>类的左花括号 <strong>必须</strong> 独自成行,且 <strong>一定不可</strong> 在其上一行或下一行存在空行。</p>
<p>类的右花括号 <strong>必须</strong> 独自成行,且 <strong>一定不可</strong> 在其上一行存在空行。</p>
</blockquote>
<pre class="language-"><code class="lang-php"><span class="token delimiter important"><?php</span>
<span class="token keyword">namespace</span> <span class="token package">Vendor<span class="token punctuation">\</span>Package</span><span class="token punctuation">;</span>
<span class="token keyword">use</span> <span class="token package">FooClass</span><span class="token punctuation">;</span>
<span class="token keyword">use</span> <span class="token package">BarClass</span> <span class="token keyword">as</span> Bar<span class="token punctuation">;</span>
<span class="token keyword">use</span> <span class="token package">OtherVendor<span class="token punctuation">\</span>OtherPackage<span class="token punctuation">\</span>BazClass</span><span class="token punctuation">;</span>
<span class="token keyword">class</span> <span class="token class-name">ClassName</span> <span class="token keyword">extends</span> <span class="token class-name">ParentClassName</span> <span class="token keyword">implements</span> <span class="token class-name"><span class="token punctuation">\</span>ArrayAccess</span><span class="token punctuation">,</span> \<span class="token package">Countable</span>
<span class="token punctuation">{</span>
<span class="token comment">//</span>
<span class="token punctuation">}</span>
</code></pre>
<blockquote>
<p><code>implements</code> 的列表 <strong>可以</strong> 分成多行,如果分成多行的话,第一个接口 <strong>必须</strong> 写在下一行,并且每行 <strong>必须</strong> 只写一个接口。</p>
</blockquote>
<pre class="language-"><code class="lang-php"><span class="token delimiter important"><?php</span>
<span class="token keyword">namespace</span> <span class="token package">Vendor<span class="token punctuation">\</span>Package</span><span class="token punctuation">;</span>
<span class="token keyword">use</span> <span class="token package">FooClass</span><span class="token punctuation">;</span>
<span class="token keyword">use</span> <span class="token package">BarClass</span> <span class="token keyword">as</span> Bar<span class="token punctuation">;</span>
<span class="token keyword">use</span> <span class="token package">OtherVendor<span class="token punctuation">\</span>OtherPackage<span class="token punctuation">\</span>BazClass</span><span class="token punctuation">;</span>
<span class="token keyword">class</span> <span class="token class-name">ClassName</span> <span class="token keyword">extends</span> <span class="token class-name">ParentClassName</span> <span class="token keyword">implements</span>
<span class="token class-name"><span class="token punctuation">\</span>ArrayAccess</span><span class="token punctuation">,</span>
\<span class="token package">Countable</span><span class="token punctuation">,</span>
\<span class="token package">Serializable</span>
<span class="token punctuation">{</span>
<span class="token comment">//</span>
<span class="token punctuation">}</span>
</code></pre>
<h3 id="使用-trait">使用 Trait</h3>
<blockquote>
<p>在类里面使用 Trait <strong>必须</strong> 在左花括号的下一行声明。</p>
</blockquote>
<pre class="language-"><code class="lang-php"><span class="token delimiter important"><?php</span>
<span class="token keyword">namespace</span> <span class="token package">Vendor<span class="token punctuation">\</span>Package</span><span class="token punctuation">;</span>
<span class="token keyword">use</span> <span class="token package">Vendor<span class="token punctuation">\</span>Package<span class="token punctuation">\</span>FirstTrait</span><span class="token punctuation">;</span>
<span class="token keyword">class</span> <span class="token class-name">ClassName</span>
<span class="token punctuation">{</span>
<span class="token keyword">use</span> <span class="token package">FirstTrait</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
</code></pre>
<blockquote>
<p>每个导入到类中的 Trait <strong>必须</strong> 包含一个声明,且每个包含声明 <strong>必须</strong> 有其导入语句。</p>
</blockquote>
<pre class="language-"><code class="lang-php"><span class="token delimiter important"><?php</span>
<span class="token keyword">namespace</span> <span class="token package">Vendor<span class="token punctuation">\</span>Package</span><span class="token punctuation">;</span>
<span class="token keyword">use</span> <span class="token package">Vendor<span class="token punctuation">\</span>Package<span class="token punctuation">\</span>FirstTrait</span><span class="token punctuation">;</span>
<span class="token keyword">use</span> <span class="token package">Vendor<span class="token punctuation">\</span>Package<span class="token punctuation">\</span>SecondTrait</span><span class="token punctuation">;</span>
<span class="token keyword">use</span> <span class="token package">Vendor<span class="token punctuation">\</span>Package<span class="token punctuation">\</span>ThirdTrait</span><span class="token punctuation">;</span>
<span class="token keyword">class</span> <span class="token class-name">ClassName</span>
<span class="token punctuation">{</span>
<span class="token keyword">use</span> <span class="token package">FirstTrait</span><span class="token punctuation">;</span>
<span class="token keyword">use</span> <span class="token package">SecondTrait</span><span class="token punctuation">;</span>
<span class="token keyword">use</span> <span class="token package">ThirdTrait</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
</code></pre>
<blockquote>
<p>在类文件中,如果在使用 Trait 之后没有其他内容了,类名右大括号 <strong>必须</strong> 另起一行。</p>
</blockquote>
<pre class="language-"><code class="lang-php"><span class="token delimiter important"><?php</span>
<span class="token keyword">namespace</span> <span class="token package">Vendor<span class="token punctuation">\</span>Package</span><span class="token punctuation">;</span>
<span class="token keyword">use</span> <span class="token package">Vendor<span class="token punctuation">\</span>Package<span class="token punctuation">\</span>FirstTrait</span><span class="token punctuation">;</span>
<span class="token keyword">class</span> <span class="token class-name">ClassName</span>
<span class="token punctuation">{</span>
<span class="token keyword">use</span> <span class="token package">FirstTrait</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
</code></pre>
<blockquote>
<p>如有其他内容,两者之间 <strong>必须</strong> 空一行。</p>
</blockquote>
<pre class="language-"><code class="lang-php"><span class="token delimiter important"><?php</span>
<span class="token keyword">namespace</span> <span class="token package">Vendor<span class="token punctuation">\</span>Package</span><span class="token punctuation">;</span>
<span class="token keyword">use</span> <span class="token package">Vendor<span class="token punctuation">\</span>Package<span class="token punctuation">\</span>FirstTrait</span><span class="token punctuation">;</span>
<span class="token keyword">class</span> <span class="token class-name">ClassName</span>
<span class="token punctuation">{</span>
<span class="token keyword">use</span> <span class="token package">FirstTrait</span><span class="token punctuation">;</span>
<span class="token comment">/**
* Just a test property.
*
* @var string
*/</span>
<span class="token keyword">private</span> string <span class="token variable">$propertyName</span> <span class="token operator">=</span> <span class="token single-quoted-string string">'foo'</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
</code></pre>
<blockquote>
<p>当使用 <code>insteadof</code> 和 <code>as</code> 运算符时,它们 <strong>必须</strong> 如下所示使用,注意缩进、间距和另起一行。</p>
</blockquote>
<pre class="language-"><code class="lang-php"><span class="token delimiter important"><?php</span>
<span class="token keyword">namespace</span> <span class="token package">Vendor<span class="token punctuation">\</span>Package</span><span class="token punctuation">;</span>
<span class="token keyword">class</span> <span class="token class-name">Talker</span>
<span class="token punctuation">{</span>
<span class="token keyword">use</span> <span class="token package">A</span><span class="token punctuation">,</span> <span class="token constant">B</span><span class="token punctuation">,</span> <span class="token constant">C</span> <span class="token punctuation">{</span>
<span class="token constant">B</span><span class="token punctuation">:</span><span class="token punctuation">:</span>smallTalk <span class="token keyword">insteadof</span> <span class="token constant">A</span><span class="token punctuation">;</span>
<span class="token constant">A</span><span class="token punctuation">:</span><span class="token punctuation">:</span>bigTalk <span class="token keyword">insteadof</span> <span class="token constant">C</span><span class="token punctuation">;</span>
<span class="token constant">C</span><span class="token punctuation">:</span><span class="token punctuation">:</span>mediumTalk <span class="token keyword">as</span> FooBar<span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
</code></pre>
<h3 id="属性和常量">属性和常量</h3>
<blockquote>
<p>每个属性都 <strong>必须</strong> 添加访问修饰符。</p>
<p>如果你的 PHP 版本支持常量可见性,那么所有常量 <strong>必须</strong> 声明可见性。</p>
<p><strong>一定不可</strong> 使用关键字 <code>var</code> 声明一个属性。</p>
<p>每条语句 <strong>一定不可</strong> 定义超过一个属性。</p>
<p><strong>一定不可</strong> 使用下划线作为前缀,来区分属性是 <code>protected</code> 或 <code>private</code> 。</p>
<p>类型声明和属性名之间 <strong>必须</strong> 有一个空格。</p>
</blockquote>
<pre class="language-"><code class="lang-php"><span class="token delimiter important"><?php</span>
<span class="token keyword">namespace</span> <span class="token package">Vendor<span class="token punctuation">\</span>Package</span><span class="token punctuation">;</span>
<span class="token keyword">class</span> <span class="token class-name">ClassName</span>
<span class="token punctuation">{</span>
<span class="token comment">/**
* Just a test property.
*
* @var integer
*/</span>
<span class="token keyword">public</span> int <span class="token variable">$propertyName</span> <span class="token operator">=</span> <span class="token number">2</span><span class="token punctuation">;</span>
<span class="token comment">/**
* Just a test property.
*
* @var string
*/</span>
<span class="token keyword">public</span> <span class="token keyword">static</span> string <span class="token variable">$anotherPropertyName</span> <span class="token operator">=</span> <span class="token single-quoted-string string">'bar'</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
</code></pre>
<h3 id="方法和函数">方法和函数</h3>
<blockquote>
<p>所有方法都 <strong>必须</strong> 添加访问修饰符。</p>
<p><strong>一定不可</strong> 使用下划线作为前缀,来区分方法是 <code>protected</code> 或 <code>private</code> 。</p>
<p>方法名称后 <strong>一定不可</strong> 有空格符,其开始花括号 <strong>必须</strong> 独占一行,结束花括号也 <strong>必须</strong> 在方法主体后单独成一行。参数左括号后和右括号前 <strong>一定不可</strong> 有空格。</p>
</blockquote>
<pre class="language-"><code class="lang-php"><span class="token delimiter important"><?php</span>
<span class="token keyword">namespace</span> <span class="token package">Vendor<span class="token punctuation">\</span>Package</span><span class="token punctuation">;</span>
<span class="token keyword">class</span> <span class="token class-name">ClassName</span>
<span class="token punctuation">{</span>
<span class="token comment">/**
* Just a test method.
*
* @param void
* @return void
*/</span>
<span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">methodName</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
<span class="token punctuation">{</span>
<span class="token comment">//</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
</code></pre>
<pre class="language-"><code class="lang-php"><span class="token delimiter important"><?php</span>
<span class="token comment">/**
* Just a test function.
*
* @param void
* @return void
*/</span>
<span class="token keyword">function</span> <span class="token function">functionName</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
<span class="token punctuation">{</span>
<span class="token comment">//</span>
<span class="token punctuation">}</span>
</code></pre>
<h3 id="方法和函数参数">方法和函数参数</h3>
<blockquote>
<p>参数列表中,每个逗号后面 <strong>必须</strong> 要有一个空格,而逗号前面 <strong>一定不可</strong> 有空格。</p>
<p>有默认值的参数, <strong>必须</strong> 放到参数列表的末尾。</p>
</blockquote>
<pre class="language-"><code class="lang-php"><span class="token delimiter important"><?php</span>
<span class="token keyword">namespace</span> <span class="token package">Vendor<span class="token punctuation">\</span>Package</span><span class="token punctuation">;</span>
<span class="token keyword">class</span> <span class="token class-name">ClassName</span>
<span class="token punctuation">{</span>
<span class="token comment">/**
* Just a test method.
*
* @param int $arg1
* @param string $arg2
* @param array $arg3
* @return void
*/</span>
<span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">methodName</span><span class="token punctuation">(</span>int <span class="token variable">$arg1</span><span class="token punctuation">,</span> string <span class="token variable">$arg2</span><span class="token punctuation">,</span> <span class="token keyword">array</span> <span class="token variable">$arg3</span> <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">)</span>
<span class="token punctuation">{</span>
<span class="token comment">//</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
</code></pre>
<blockquote>
<p>参数列表 <strong>可以</strong> 分成多行,这样,包括第一个参数在内的每个参数都 <strong>必须</strong> 单独成行。</p>
<p>拆分成多行的参数列表后,结束括号以及方法开始花括号 <strong>必须</strong> 写在同一行,中间用一个空格分隔。</p>
</blockquote>
<pre class="language-"><code class="lang-php"><span class="token delimiter important"><?php</span>
<span class="token keyword">namespace</span> <span class="token package">Vendor<span class="token punctuation">\</span>Package</span><span class="token punctuation">;</span>
<span class="token keyword">class</span> <span class="token class-name">ClassName</span>
<span class="token punctuation">{</span>
<span class="token comment">/**
* Just a test method.
*
* @param int $arg1
* @param string $arg2
* @param array $arg3
* @return void
*/</span>
<span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">methodName</span><span class="token punctuation">(</span>
int <span class="token variable">$arg1</span><span class="token punctuation">,</span>
string <span class="token variable">$arg2</span><span class="token punctuation">,</span>
<span class="token keyword">array</span> <span class="token variable">$arg3</span> <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
<span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token comment">//</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
</code></pre>
<blockquote>
<p>当你定义一个返回值类型声明时,冒号后面的类型声明 <strong>必须</strong> 用空格符隔开。</p>
<p>冒号和声明 <strong>必须</strong> 在同一行,且跟参数列表后的结束括号之间没有空格。</p>
</blockquote>
<pre class="language-"><code class="lang-php"><span class="token delimiter important"><?php</span>
<span class="token keyword">namespace</span> <span class="token package">Vendor<span class="token punctuation">\</span>Package</span><span class="token punctuation">;</span>
<span class="token keyword">class</span> <span class="token class-name">ClassName</span>
<span class="token punctuation">{</span>
<span class="token comment">/**
* Just a test method.
*
* @param int $arg1
* @param string $arg2
* @return string
*/</span>
<span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">methodName</span><span class="token punctuation">(</span>int <span class="token variable">$arg1</span><span class="token punctuation">,</span> string <span class="token variable">$arg2</span><span class="token punctuation">)</span><span class="token punctuation">:</span> string
<span class="token punctuation">{</span>
<span class="token keyword">return</span> <span class="token single-quoted-string string">'foo'</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token comment">/**
* Just a test method.
*
* @param int $arg1
* @param string $arg2
* @param array $arg3
* @return string
*/</span>
<span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">anotherMethodName</span><span class="token punctuation">(</span>
int <span class="token variable">$arg1</span><span class="token punctuation">,</span>
string <span class="token variable">$arg2</span><span class="token punctuation">,</span>
<span class="token keyword">array</span> <span class="token variable">$arg3</span> <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
<span class="token punctuation">)</span><span class="token punctuation">:</span> string <span class="token punctuation">{</span>
<span class="token keyword">return</span> <span class="token single-quoted-string string">'foo'</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
</code></pre>
<blockquote>
<p>在可空类型声明中,问号和类型声明之间 <strong>不能</strong> 有空格。</p>
</blockquote>
<pre class="language-"><code class="lang-php"><span class="token delimiter important"><?php</span>
<span class="token keyword">namespace</span> <span class="token package">Vendor<span class="token punctuation">\</span>Package</span><span class="token punctuation">;</span>
<span class="token keyword">class</span> <span class="token class-name">ClassName</span>
<span class="token punctuation">{</span>
<span class="token comment">/**
* Just a test method.
*
* @param int|null $arg1
* @param string|null $arg2
* @return string|null
*/</span>
<span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">methodName</span><span class="token punctuation">(</span><span class="token operator">?</span>int <span class="token variable">$arg1</span><span class="token punctuation">,</span> <span class="token operator">?</span>string <span class="token variable">$arg2</span><span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token operator">?</span>string
<span class="token punctuation">{</span>
<span class="token keyword">return</span> <span class="token single-quoted-string string">'foo'</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
</code></pre>
<blockquote>
<p>当在参数前使用引用运算符时,引用运算符之后 <strong>不能</strong> 有空格。</p>
<p>可变参数运算符和参数名称之间 <strong>不能</strong> 有空格。</p>
</blockquote>
<pre class="language-"><code class="lang-php"><span class="token delimiter important"><?php</span>
<span class="token keyword">namespace</span> <span class="token package">Vendor<span class="token punctuation">\</span>Package</span><span class="token punctuation">;</span>
<span class="token keyword">class</span> <span class="token class-name">ClassName</span>
<span class="token punctuation">{</span>
<span class="token comment">/**
* Just a test method.
*
* @param int &$arg1
* @param string &$arg2
* @param int $arg3
* @return void
*/</span>
<span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">methodName</span><span class="token punctuation">(</span>int <span class="token operator">&</span><span class="token variable">$arg1</span><span class="token punctuation">,</span> string <span class="token operator">&</span><span class="token variable">$arg2</span><span class="token punctuation">,</span> int <span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token variable">$arg3</span><span class="token punctuation">)</span>
<span class="token punctuation">{</span>
<span class="token comment">//</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
</code></pre>
<blockquote>
<p>当同时使用引用运算符和可变参数运算符时,它们之间 <strong>不能</strong> 有任何空格。</p>
</blockquote>
<pre class="language-"><code class="lang-php"><span class="token delimiter important"><?php</span>
<span class="token keyword">namespace</span> <span class="token package">Vendor<span class="token punctuation">\</span>Package</span><span class="token punctuation">;</span>
<span class="token keyword">class</span> <span class="token class-name">ClassName</span>
<span class="token punctuation">{</span>
<span class="token comment">/**
* Just a test method.
*
* @param int &$arg1
* @param int $arg2
* @return void
*/</span>
<span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">methodName</span><span class="token punctuation">(</span>int <span class="token operator">&</span><span class="token variable">$arg1</span><span class="token punctuation">,</span> int <span class="token operator">&</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token variable">$arg2</span><span class="token punctuation">)</span>
<span class="token punctuation">{</span>
<span class="token comment">//</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
</code></pre>
<h3 id="abstract-和-final-和-static">abstract 和 final 和 static</h3>
<blockquote>
<p>需要添加 <code>abstract</code> 或 <code>final</code> 声明时, <code>abstract</code> <strong>必须</strong> 写在访问修饰符之前,而 <code>static</code> 则 <strong>必须</strong> 写在访问修饰符之后。</p>
</blockquote>
<pre class="language-"><code class="lang-php"><span class="token delimiter important"><?php</span>
<span class="token keyword">namespace</span> <span class="token package">Vendor<span class="token punctuation">\</span>Package</span><span class="token punctuation">;</span>
<span class="token keyword">abstract</span> <span class="token keyword">class</span> <span class="token class-name">ClassName</span>
<span class="token punctuation">{</span>
<span class="token comment">/**
* Just a test property.
*
* @var string|null
*/</span>
<span class="token keyword">protected</span> <span class="token keyword">static</span> <span class="token operator">?</span>string <span class="token variable">$propertyName</span><span class="token punctuation">;</span>
<span class="token comment">/**
* Just an abstract method.
*
* @param void
* @return void
*/</span>
<span class="token keyword">abstract</span> <span class="token keyword">protected</span> <span class="token keyword">function</span> <span class="token function">methodName</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">/**
* Just a test method.
*
* @param void
* @return void
*/</span>
<span class="token keyword">final</span> <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">function</span> <span class="token function">anotherMethodName</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
<span class="token punctuation">{</span>
<span class="token comment">//</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
</code></pre>
<h3 id="方法和函数的调用">方法和函数的调用</h3>
<blockquote>
<p>方法及函数调用时,方法名或函数名与参数左括号之间 <strong>一定不可</strong> 有空格,参数右括号前也 <strong>一定不可</strong> 有空格。每个参数前 <strong>一定不可</strong> 有空格,但其后 <strong>必须</strong> 有一个空格。</p>
</blockquote>
<pre class="language-"><code class="lang-php"><span class="token delimiter important"><?php</span>
<span class="token function">foo</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$foo</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">bar</span><span class="token punctuation">(</span><span class="token variable">$arg1</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
Foo<span class="token punctuation">:</span><span class="token punctuation">:</span><span class="token function">bar</span><span class="token punctuation">(</span><span class="token variable">$arg2</span><span class="token punctuation">,</span> <span class="token variable">$arg3</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre>
<blockquote>
<p>参数 <strong>可以</strong> 分列成多行,此时包括第一个参数在内的每个参数都 <strong>必须</strong> 单独成行。</p>
</blockquote>
<pre class="language-"><code class="lang-php"><span class="token delimiter important"><?php</span>
<span class="token variable">$foo</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">bar</span><span class="token punctuation">(</span>
<span class="token variable">$longArgument</span><span class="token punctuation">,</span>
<span class="token variable">$longerArgument</span><span class="token punctuation">,</span>
<span class="token variable">$muchLongerArgument</span>
<span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre>
<h2 id="流程控制">流程控制</h2>
<blockquote>
<p>流程控制关键字之后 <strong>必须</strong> 要有一个空格。</p>
<p>左括号后面 <strong>不能</strong> 有空格,右括号前面 <strong>不能</strong> 有空格。</p>
<p>右括号与左大括号之间 <strong>必须</strong> 要有一个空格。</p>
<p>流程主体 <strong>必须</strong> 要缩进一次。</p>
<p>流程主体 <strong>必须</strong> 在左大括号之后另起一行。</p>
<p>右大括号 <strong>必须</strong> 在流程主体之后另起一行。</p>
<p>每个流程控制主体 <strong>必须</strong> 以封闭的括号结束,这将标准化流程结构,同时减少由于流程中添加新的内容而引入错误的可能性。</p>
</blockquote>
<h3 id="if-和-elseif-和-else">if 和 elseif 和 else</h3>
<blockquote>
<p>关键字 <code>elseif</code> <strong>应该</strong> 替换 <code>else if</code> ,这样流程控制关键字看起来像一个词。</p>
</blockquote>
<pre class="language-"><code class="lang-php"><span class="token delimiter important"><?php</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token variable">$expr1</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token comment">//</span>
<span class="token punctuation">}</span> <span class="token keyword">elseif</span> <span class="token punctuation">(</span><span class="token variable">$expr2</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token comment">//</span>
<span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span>
<span class="token comment">//</span>
<span class="token punctuation">}</span>
</code></pre>
<blockquote>
<p>括号中的表达式 <strong>可能</strong> 会被分开为多行,每一行至少缩进一次。如果这样做,第一个条件 <strong>必须</strong> 在新的一行。右括号和左大括号 <strong>必须</strong> 在同一行,而且中间有一个空格。条件中间的逻辑运算符 <strong>必须</strong> 在每一行的开头或者结尾,而不是混在一起。</p>
</blockquote>
<pre class="language-"><code class="lang-php"><span class="token delimiter important"><?php</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span>
<span class="token variable">$expr1</span>
<span class="token operator">&&</span> <span class="token variable">$expr2</span>
<span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token comment">//</span>
<span class="token punctuation">}</span> <span class="token keyword">elseif</span> <span class="token punctuation">(</span>
<span class="token variable">$expr3</span>
<span class="token operator">&&</span> <span class="token variable">$expr4</span>
<span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token comment">//</span>
<span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span>
<span class="token comment">//</span>
<span class="token punctuation">}</span>
</code></pre>
<h3 id="switch-和-case">switch 和 case</h3>
<blockquote>
<p><code>case</code> 语句 <strong>必须</strong> 相对 <code>switch</code> 进行一次缩进,而 <code>break</code> 语句以及 <code>case</code> 内的其它语句都 <strong>必须</strong> 相对 <code>case</code> 进行一次缩进。</p>
<p>如果存在非空的 <code>case</code> 语句,主体里 <strong>必须</strong> 有类似 <code>// no break</code> 的注释。</p>
</blockquote>
<pre class="language-"><code class="lang-php"><span class="token delimiter important"><?php</span>
<span class="token keyword">switch</span> <span class="token punctuation">(</span><span class="token variable">$expr</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">case</span> <span class="token number">0</span><span class="token punctuation">:</span>
<span class="token keyword">echo</span> <span class="token number">0</span><span class="token punctuation">;</span>
<span class="token keyword">break</span><span class="token punctuation">;</span>
<span class="token keyword">case</span> <span class="token number">1</span><span class="token punctuation">:</span>
<span class="token keyword">echo</span> <span class="token number">1</span><span class="token punctuation">;</span>
<span class="token comment">// no break</span>
<span class="token keyword">case</span> <span class="token number">2</span><span class="token punctuation">:</span>
<span class="token keyword">case</span> <span class="token number">3</span><span class="token punctuation">:</span>
<span class="token keyword">case</span> <span class="token number">4</span><span class="token punctuation">:</span>
<span class="token keyword">echo</span> <span class="token number">4</span><span class="token punctuation">;</span>
<span class="token keyword">return</span><span class="token punctuation">;</span>
<span class="token keyword">default</span><span class="token punctuation">:</span>
<span class="token keyword">echo</span> <span class="token single-quoted-string string">'default'</span><span class="token punctuation">;</span>
<span class="token keyword">break</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
</code></pre>
<blockquote>
<p>括号中的表达式 <strong>可能</strong> 会被分开多行,每一行至少要缩进一次。如果这样做,第一个条件 <strong>必须</strong> 在新的一行。右括号和左大括号 <strong>必须</strong> 在同一行,而且中间有一个空格。条件中间的逻辑运算符 <strong>必须</strong> 在每一行的开头或者结尾,而不是混在一起。</p>
</blockquote>
<pre class="language-"><code class="lang-php"><span class="token delimiter important"><?php</span>
<span class="token keyword">switch</span> <span class="token punctuation">(</span>
<span class="token variable">$expr1</span>
<span class="token operator">&&</span> <span class="token variable">$expr2</span>
<span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">case</span> <span class="token number">0</span><span class="token punctuation">:</span>
<span class="token keyword">echo</span> <span class="token number">0</span><span class="token punctuation">;</span>
<span class="token keyword">break</span><span class="token punctuation">;</span>
<span class="token keyword">case</span> <span class="token number">1</span><span class="token punctuation">:</span>
<span class="token keyword">echo</span> <span class="token number">1</span><span class="token punctuation">;</span>
<span class="token comment">// no break</span>
<span class="token keyword">case</span> <span class="token number">2</span><span class="token punctuation">:</span>
<span class="token keyword">case</span> <span class="token number">3</span><span class="token punctuation">:</span>
<span class="token keyword">case</span> <span class="token number">4</span><span class="token punctuation">:</span>
<span class="token keyword">echo</span> <span class="token number">4</span><span class="token punctuation">;</span>
<span class="token keyword">return</span><span class="token punctuation">;</span>
<span class="token keyword">default</span><span class="token punctuation">:</span>
<span class="token keyword">echo</span> <span class="token single-quoted-string string">'default'</span><span class="token punctuation">;</span>
<span class="token keyword">break</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
</code></pre>
<h3 id="while-和-do-while">while 和 do-while</h3>
<pre class="language-"><code class="lang-php"><span class="token delimiter important"><?php</span>
<span class="token keyword">while</span> <span class="token punctuation">(</span><span class="token variable">$expr</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token comment">//</span>
<span class="token punctuation">}</span>
<span class="token keyword">do</span> <span class="token punctuation">{</span>
<span class="token comment">//</span>
<span class="token punctuation">}</span> <span class="token keyword">while</span> <span class="token punctuation">(</span><span class="token variable">$expr</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre>
<blockquote>
<p>括号中的表达式 <strong>可能</strong> 会被分开多行,每一行至少要缩进一次。如果这样做,第一个条件 <strong>必须</strong> 在新的一行。右括号和左大括号 <strong>必须</strong> 在同一行,而且中间有一个空格。条件中间的逻辑运算符 <strong>必须</strong> 在每一行的开头或者结尾,而不是混在一起。</p>
</blockquote>
<pre class="language-"><code class="lang-php"><span class="token delimiter important"><?php</span>
<span class="token keyword">while</span> <span class="token punctuation">(</span>
<span class="token variable">$expr1</span>
<span class="token operator">&&</span> <span class="token variable">$expr2</span>
<span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token comment">//</span>
<span class="token punctuation">}</span>
<span class="token keyword">do</span> <span class="token punctuation">{</span>
<span class="token comment">//</span>
<span class="token punctuation">}</span> <span class="token keyword">while</span> <span class="token punctuation">(</span>
<span class="token variable">$expr1</span>
<span class="token operator">&&</span> <span class="token variable">$expr2</span>
<span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre>
<h3 id="for">for</h3>
<pre class="language-"><code class="lang-php"><span class="token delimiter important"><?php</span>
<span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token variable">$i</span> <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> <span class="token variable">$i</span> <span class="token operator"><</span> <span class="token number">10</span><span class="token punctuation">;</span> <span class="token variable">$i</span><span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token comment">//</span>
<span class="token punctuation">}</span>
</code></pre>
<blockquote>
<p>括号中的表达式 <strong>可能</strong> 会被分开多行,每一行至少要缩进一次。如果这样做,第一个条件 <strong>必须</strong> 在新的一行。右括号和左大括号 <strong>必须</strong> 在同一行,而且中间有一个空格。</p>
</blockquote>
<pre class="language-"><code class="lang-php"><span class="token delimiter important"><?php</span>
<span class="token keyword">for</span> <span class="token punctuation">(</span>
<span class="token variable">$i</span> <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span>
<span class="token variable">$i</span> <span class="token operator"><</span> <span class="token number">10</span><span class="token punctuation">;</span>
<span class="token variable">$i</span><span class="token operator">++</span>
<span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token comment">//</span>
<span class="token punctuation">}</span>
</code></pre>
<h3 id="foreach">foreach</h3>
<pre class="language-"><code class="lang-php"><span class="token delimiter important"><?php</span>
<span class="token keyword">foreach</span> <span class="token punctuation">(</span><span class="token variable">$iterable</span> <span class="token keyword">as</span> <span class="token variable">$key</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token variable">$value</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token comment">//</span>
<span class="token punctuation">}</span>
</code></pre>
<h3 id="try-和-catch-和-finally">try 和 catch 和 finally</h3>
<pre class="language-"><code class="lang-php"><span class="token delimiter important"><?php</span>
<span class="token keyword">try</span> <span class="token punctuation">{</span>
<span class="token comment">//</span>
<span class="token punctuation">}</span> <span class="token keyword">catch</span> <span class="token punctuation">(</span>FirstExceptionType <span class="token variable">$e</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token comment">//</span>
<span class="token punctuation">}</span> <span class="token keyword">catch</span> <span class="token punctuation">(</span>OtherExceptionType <span class="token variable">$e</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token comment">//</span>
<span class="token punctuation">}</span> <span class="token keyword">finally</span> <span class="token punctuation">{</span>
<span class="token comment">//</span>
<span class="token punctuation">}</span>
</code></pre>
<h2 id="运算符">运算符</h2>
<blockquote>
<p>当运算符周围允许出现空格时, <strong>可以</strong> 出于可读性目的使用多个空格。</p>
</blockquote>
<h3 id="一元运算符">一元运算符</h3>
<blockquote>
<p>递增运算符和递减运算符与操作数之间 <strong>不得</strong> 有任何空格。</p>
</blockquote>
<pre class="language-"><code class="lang-php"><span class="token delimiter important"><?php</span>
<span class="token variable">$i</span><span class="token operator">++</span><span class="token punctuation">;</span>
<span class="token operator">++</span><span class="token variable">$j</span><span class="token punctuation">;</span>
</code></pre>
<blockquote>
<p>类型转换运算符的圆括号内部 <strong>不得</strong> 有任何空格。</p>
</blockquote>
<pre class="language-"><code class="lang-php"><span class="token delimiter important"><?php</span>
<span class="token variable">$intValue</span> <span class="token operator">=</span> <span class="token punctuation">(</span>int<span class="token punctuation">)</span> <span class="token variable">$input</span><span class="token punctuation">;</span>
</code></pre>
<h3 id="二元运算符">二元运算符</h3>
<blockquote>
<p>所有二元运算符 <strong>必须</strong> 在前后跟至少一个空格。</p>
</blockquote>
<pre class="language-"><code class="lang-php"><span class="token delimiter important"><?php</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token variable">$a</span> <span class="token operator">===</span> <span class="token variable">$b</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token variable">$foo</span> <span class="token operator">=</span> <span class="token variable">$bar</span> <span class="token operator">?</span><span class="token operator">?</span> <span class="token variable">$a</span> <span class="token operator">?</span><span class="token operator">?</span> <span class="token variable">$b</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span> <span class="token keyword">elseif</span> <span class="token punctuation">(</span><span class="token variable">$a</span> <span class="token operator">></span> <span class="token variable">$b</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token variable">$foo</span> <span class="token operator">=</span> <span class="token variable">$a</span> <span class="token operator">+</span> <span class="token variable">$b</span> <span class="token operator">*</span> <span class="token variable">$c</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
</code></pre>
<h3 id="三元运算符">三元运算符</h3>
<pre class="language-"><code class="lang-php"><span class="token delimiter important"><?php</span>
<span class="token variable">$variable</span> <span class="token operator">=</span> <span class="token variable">$foo</span> <span class="token operator">?</span> <span class="token single-quoted-string string">'foo'</span> <span class="token punctuation">:</span> <span class="token single-quoted-string string">'bar'</span><span class="token punctuation">;</span>
</code></pre>
<blockquote>
<p>如果省略条件运算符的中间操作数,运算符 <strong>必须</strong> 遵循与其他二元运算符相同的样式规则。</p>
</blockquote>
<pre class="language-"><code class="lang-php"><span class="token delimiter important"><?php</span>
<span class="token variable">$variable</span> <span class="token operator">=</span> <span class="token variable">$foo</span> <span class="token operator">?</span><span class="token punctuation">:</span> <span class="token single-quoted-string string">'bar'</span><span class="token punctuation">;</span>
</code></pre>
<h2 id="闭包">闭包</h2>
<blockquote>
<p>闭包声明时,关键字 <code>function</code> 后以及关键字 <code>use</code> 的前后都 <strong>必须</strong> 要有一个空格。</p>
<p>开始花括号 <strong>必须</strong> 写在声明的同一行,结束花括号 <strong>必须</strong> 紧跟主体结束的下一行。</p>
<p>参数列表和变量列表的左括号后以及右括号前, <strong>一定不可</strong> 有空格。</p>
<p>参数和变量列表中,逗号前 <strong>一定不可</strong> 有空格,而逗号后 <strong>必须</strong> 要有空格。</p>
<p>闭包中有默认值的参数 <strong>必须</strong> 放到列表的后面。</p>
<p>如果声明了返回类型,它 <strong>必须</strong> 遵循普通函数和方法相同的规则,如果使用 <code>use</code> 关键字,冒号 <strong>必须</strong> 在 <code>use</code> 右括号后且冒号前后不能有空格。</p>
</blockquote>
<pre class="language-"><code class="lang-php"><span class="token delimiter important"><?php</span>
<span class="token comment">/**
* Just a test function.
*
* @param int $arg1
* @param string $arg2
* @return void
*/</span>
<span class="token variable">$closureWithArgs</span> <span class="token operator">=</span> <span class="token keyword">function</span> <span class="token punctuation">(</span>int <span class="token variable">$arg1</span><span class="token punctuation">,</span> string <span class="token variable">$arg2</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token comment">//</span>
<span class="token punctuation">}</span><span class="token punctuation">;</span>
<span class="token comment">/**
* Just a test function.
*
* @param int $arg1
* @param string $arg2
* @return void
*/</span>
<span class="token variable">$closureWithArgsAndVars</span> <span class="token operator">=</span> <span class="token keyword">function</span> <span class="token punctuation">(</span>int <span class="token variable">$arg1</span><span class="token punctuation">,</span> string <span class="token variable">$arg2</span><span class="token punctuation">)</span> <span class="token keyword">use</span> <span class="token punctuation">(</span><span class="token variable">$var1</span><span class="token punctuation">,</span> <span class="token variable">$var2</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token comment">//</span>
<span class="token punctuation">}</span><span class="token punctuation">;</span>
<span class="token comment">/**
* Just a test function.
*
* @param int $arg1
* @param string $arg2
* @return string
*/</span>
<span class="token variable">$closureWithArgsVarsAndReturn</span> <span class="token operator">=</span> <span class="token keyword">function</span> <span class="token punctuation">(</span>int <span class="token variable">$arg1</span><span class="token punctuation">,</span> string <span class="token variable">$arg2</span><span class="token punctuation">)</span> <span class="token keyword">use</span> <span class="token punctuation">(</span><span class="token variable">$var1</span><span class="token punctuation">,</span> <span class="token variable">$var2</span><span class="token punctuation">)</span><span class="token punctuation">:</span> string <span class="token punctuation">{</span>
<span class="token keyword">return</span> <span class="token single-quoted-string string">'foo'</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">;</span>
</code></pre>
<blockquote>
<p>参数和变量 <strong>可以</strong> 分多行放置,此时第一项 <strong>必须</strong> 放在下一行,并且每行只能有一个参数或变量。</p>
<p>结束多行列表的时候,右括号和左大括号 <strong>必须</strong> 要放在一行,而且中间有一个空格。</p>
</blockquote>
<pre class="language-"><code class="lang-php"><span class="token delimiter important"><?php</span>
<span class="token comment">/**
* Just a test function.
*
* @param int $longArgument
* @param string $longerArgument
* @param array $muchLongerArgument
* @return void
*/</span>
<span class="token variable">$longArgs_noVars</span> <span class="token operator">=</span> <span class="token keyword">function</span> <span class="token punctuation">(</span>
int <span class="token variable">$longArgument</span><span class="token punctuation">,</span>
string <span class="token variable">$longerArgument</span><span class="token punctuation">,</span>
<span class="token keyword">array</span> <span class="token variable">$muchLongerArgument</span>
<span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token comment">//</span>
<span class="token punctuation">}</span><span class="token punctuation">;</span>
<span class="token comment">/**
* Just a test function.
*
* @param void
* @return void
*/</span>
<span class="token variable">$noArgs_longVars</span> <span class="token operator">=</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">use</span> <span class="token punctuation">(</span>
<span class="token variable">$longVar1</span><span class="token punctuation">,</span>
<span class="token variable">$longerVar2</span><span class="token punctuation">,</span>
<span class="token variable">$muchLongerVar3</span>
<span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token comment">//</span>
<span class="token punctuation">}</span><span class="token punctuation">;</span>
<span class="token comment">/**
* Just a test function.
*
* @param int $longArgument
* @param string $longerArgument
* @param array $muchLongerArgument
* @return void
*/</span>
<span class="token variable">$longArgs_longVars</span> <span class="token operator">=</span> <span class="token keyword">function</span> <span class="token punctuation">(</span>
int <span class="token variable">$longArgument</span><span class="token punctuation">,</span>
string <span class="token variable">$longerArgument</span><span class="token punctuation">,</span>
<span class="token keyword">array</span> <span class="token variable">$muchLongerArgument</span>
<span class="token punctuation">)</span> <span class="token keyword">use</span> <span class="token punctuation">(</span>
<span class="token variable">$longVar1</span><span class="token punctuation">,</span>
<span class="token variable">$longerVar2</span><span class="token punctuation">,</span>
<span class="token variable">$muchLongerVar3</span>
<span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token comment">//</span>
<span class="token punctuation">}</span><span class="token punctuation">;</span>
<span class="token comment">/**
* Just a test function.
*
* @param int $longArgument
* @param string $longerArgument
* @param array $muchLongerArgument
* @return void
*/</span>
<span class="token variable">$longArgs_shortVars</span> <span class="token operator">=</span> <span class="token keyword">function</span> <span class="token punctuation">(</span>
int <span class="token variable">$longArgument</span><span class="token punctuation">,</span>
string <span class="token variable">$longerArgument</span><span class="token punctuation">,</span>
<span class="token keyword">array</span> <span class="token variable">$muchLongerArgument</span>
<span class="token punctuation">)</span> <span class="token keyword">use</span> <span class="token punctuation">(</span><span class="token variable">$var</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token comment">//</span>
<span class="token punctuation">}</span><span class="token punctuation">;</span>
<span class="token comment">/**
* Just a test function.
*
* @param int $arg
* @return void
*/</span>
<span class="token variable">$shortArgs_longVars</span> <span class="token operator">=</span> <span class="token keyword">function</span> <span class="token punctuation">(</span>int <span class="token variable">$arg</span><span class="token punctuation">)</span> <span class="token keyword">use</span> <span class="token punctuation">(</span>
<span class="token variable">$longVar1</span><span class="token punctuation">,</span>
<span class="token variable">$longerVar2</span><span class="token punctuation">,</span>
<span class="token variable">$muchLongerVar3</span>
<span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token comment">//</span>
<span class="token punctuation">}</span><span class="token punctuation">;</span>
</code></pre>
<blockquote>
<p>注意,闭包被直接用作函数或方法调用的参数时,以上规则仍然适用。</p>
</blockquote>
<pre class="language-"><code class="lang-php"><span class="token delimiter important"><?php</span>
<span class="token variable">$foo</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">bar</span><span class="token punctuation">(</span>
<span class="token variable">$arg1</span><span class="token punctuation">,</span>
<span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token variable">$arg2</span><span class="token punctuation">)</span> <span class="token keyword">use</span> <span class="token punctuation">(</span><span class="token variable">$var</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token comment">//</span>
<span class="token punctuation">}</span><span class="token punctuation">,</span>
<span class="token variable">$arg3</span>
<span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre>
<h2 id="匿名类">匿名类</h2>
<blockquote>
<p>匿名类 <strong>必须</strong> 遵循和闭包一样的规范。</p>
</blockquote>
<pre class="language-"><code class="lang-php"><span class="token delimiter important"><?php</span>
<span class="token variable">$instance</span> <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">class</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">;</span>
</code></pre>
<blockquote>
<p>如果接口列表不换行,左花括号 <strong>可以</strong> 在同一行,如果接口列表换行,左花括号 <strong>必须</strong> 放在最后一个接口的下一行。</p>
</blockquote>
<pre class="language-"><code class="lang-php"><span class="token delimiter important"><?php</span>
<span class="token variable">$instance</span> <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">class</span> <span class="token keyword">extends</span> <span class="token class-name"><span class="token punctuation">\</span>Foo</span> <span class="token keyword">implements</span> <span class="token class-name"><span class="token punctuation">\</span>HandleableInterface</span> <span class="token punctuation">{</span>
<span class="token comment">//</span>
<span class="token punctuation">}</span><span class="token punctuation">;</span>
<span class="token variable">$instance</span> <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">class</span> <span class="token keyword">extends</span> <span class="token class-name"><span class="token punctuation">\</span>Foo</span> <span class="token keyword">implements</span>
<span class="token class-name"><span class="token punctuation">\</span>ArrayAccess</span><span class="token punctuation">,</span>
\<span class="token package">Countable</span><span class="token punctuation">,</span>
\<span class="token package">Serializable</span>
<span class="token punctuation">{</span>
<span class="token comment">//</span>
<span class="token punctuation">}</span><span class="token punctuation">;</span>
</code></pre>
</section>
</div>
<div class="search-results">
<div class="has-results">
<h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
<ul class="search-results-list"></ul>
</div>
<div class="no-results">
<h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
</div>
</div>
</div>
</div>
</div>
</div>
<a href="PSR-4 自动加载规范.html" class="navigation navigation-prev navigation-unique" aria-label="Previous page: PSR-4 自动加载规范">
<i class="fa fa-angle-left"></i>
</a>
</div>
<script>
var gitbook = gitbook || [];
gitbook.push(function() {
gitbook.page.hasChanged({"page":{"title":"PSR-12 编码规范扩充","level":"1.1.7.3","depth":3,"previous":{"title":"PSR-4 自动加载规范","level":"1.1.7.2","depth":3,"path":"docs/PSR/PSR-4 自动加载规范.md","ref":"docs/PSR/PSR-4 自动加载规范.md","articles":[]},"dir":"ltr"},"config":{"plugins":["back-to-top-button","chapter-fold","favicon","hide-element","lightbox","-highlight","prism","-lunr","-search","search-pro","splitter","livereload"],"root":"","styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"chapter-fold":{},"prism":{"css":["prismjs/themes/prism-okaidia.css"]},"livereload":{},"splitter":{},"search-pro":{},"hide-element":{"elements":[".gitbook-link"]},"fontsettings":{"theme":"white","family":"sans","size":2},"favicon":{"shortcut":"favicon.ico","bookmark":"favicon.ico","appleTouch":"favicon.png","appleTouchMore":{"120x120":"favicon-120x120.png","180x180":"favicon-180x180.png"}},"lightbox":{"jquery":true,"sameUuid":false},"back-to-top-button":{},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"theme":"default","author":"Kuriv Vesti","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"isbn":"","variables":{},"title":"PHP","language":"zh-hans","gitbook":">=3.0.0","description":"PHP 手册","direction":"ltr"},"file":{"path":"docs/PSR/PSR-12 编码规范扩充.md","mtime":"2020-05-02T09:07:59.367Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2020-07-13T03:43:41.544Z"},"basePath":"../..","book":{"language":""}});
});
</script>
</div>
<script src="../../gitbook/gitbook.js"></script>
<script src="../../gitbook/theme.js"></script>
<script src="../../gitbook/gitbook-plugin-back-to-top-button/plugin.js"></script>
<script src="../../gitbook/gitbook-plugin-chapter-fold/chapter-fold.js"></script>
<script src="../../gitbook/gitbook-plugin-hide-element/plugin.js"></script>
<script src="../../gitbook/gitbook-plugin-lightbox/js/lightbox.min.js"></script>
<script src="../../gitbook/gitbook-plugin-search-pro/jquery.mark.min.js"></script>
<script src="../../gitbook/gitbook-plugin-search-pro/search.js"></script>
<script src="../../gitbook/gitbook-plugin-splitter/splitter.js"></script>
<script src="../../gitbook/gitbook-plugin-livereload/plugin.js"></script>
<script src="../../gitbook/gitbook-plugin-sharing/buttons.js"></script>
<script src="../../gitbook/gitbook-plugin-fontsettings/fontsettings.js"></script>
</body>
</html>