<!-- This file is autogenerated, do not edit it manually -->
<!-- Run tools/toc.php instead -->

#Specification for PHP
Facebook has dedicated all copyright to this specification to the public
domain worldwide under the CC0 Public Domain Dedication located at
<http://creativecommons.org/publicdomain/zero/1.0/>. This specification
is distributed without any warranty.

(Initially written in 2014 by Facebook, Inc., July 2014)

**Table of Contents**
- [Introduction](01-introduction.md#introduction)
- [Conformance](02-conformance.md#conformance)
- [Terms and Definitions](03-terms-and-definitions.md#terms-and-definitions)
- [Basic Concepts](04-basic-concepts.md#basic-concepts)
  - [Program Structure](04-basic-concepts.md#program-structure)
  - [Program Start-Up](04-basic-concepts.md#program-start-up)
  - [Program Termination](04-basic-concepts.md#program-termination)
  - [__halt_compiler](04-basic-concepts.md#__halt_compiler)
  - [The Memory Model](04-basic-concepts.md#the-memory-model)
    - [General](04-basic-concepts.md#general)
    - [Reclamation and Automatic Memory Management](04-basic-concepts.md#reclamation-and-automatic-memory-management)
    - [Assignment](04-basic-concepts.md#assignment)
      - [General](04-basic-concepts.md#general-1)
      - [Value Assignment of Scalar Types to a Local Variable](04-basic-concepts.md#value-assignment-of-scalar-types-to-a-local-variable)
      - [Value Assignment of Objects to a Local Variable](04-basic-concepts.md#value-assignment-of-objects-to-a-local-variable)
      - [ByRef Assignment for Scalar Types with Local Variables](04-basic-concepts.md#byref-assignment-for-scalar-types-with-local-variables)
      - [ByRef Assignment of Non-Scalar Types with Local Variables](04-basic-concepts.md#byref-assignment-of-non-scalar-types-with-local-variables)
      - [Value Assignment of Array Types to Local Variables](04-basic-concepts.md#value-assignment-of-array-types-to-local-variables)
      - [Deferred Array Copying](04-basic-concepts.md#deferred-array-copying)
      - [General Value Assignment](04-basic-concepts.md#general-value-assignment)
      - [General ByRef Assignment](04-basic-concepts.md#general-byref-assignment)
    - [Argument Passing](04-basic-concepts.md#argument-passing)
    - [Value Returning](04-basic-concepts.md#value-returning)
    - [Cloning objects](04-basic-concepts.md#cloning-objects)
  - [Scope](04-basic-concepts.md#scope)
  - [Storage Duration](04-basic-concepts.md#storage-duration)
- [Types](05-types.md#types)
  - [General](05-types.md#general)
  - [Scalar Types](05-types.md#scalar-types)
    - [General](05-types.md#general-1)
    - [The Boolean Type](05-types.md#the-boolean-type)
    - [The Integer Type](05-types.md#the-integer-type)
    - [The Floating-Point Type](05-types.md#the-floating-point-type)
    - [The String Type](05-types.md#the-string-type)
    - [The Null Type](05-types.md#the-null-type)
  - [Composite Types](05-types.md#composite-types)
    - [The Array Type](05-types.md#the-array-type)
    - [Objects](05-types.md#objects)
    - [Resources](05-types.md#resources)
- [Constants](06-constants.md#constants)
  - [General](06-constants.md#general)
  - [Context-Dependent Constants](06-constants.md#context-dependent-constants)
  - [Core Predefined Constants](06-constants.md#core-predefined-constants)
  - [User-Defined Constants](06-constants.md#user-defined-constants)
- [Variables](07-variables.md#variables)
  - [General](07-variables.md#general)
  - [Kinds of Variables](07-variables.md#kinds-of-variables)
    - [Constants](07-variables.md#constants)
    - [Local Variables](07-variables.md#local-variables)
    - [Array Elements](07-variables.md#array-elements)
    - [Function Statics](07-variables.md#function-statics)
    - [Global Variables](07-variables.md#global-variables)
    - [Instance Properties](07-variables.md#instance-properties)
    - [Static Properties](07-variables.md#static-properties)
    - [Class and Interface Constants](07-variables.md#class-and-interface-constants)
  - [Predefined Variables](07-variables.md#predefined-variables)
- [Conversions](08-conversions.md#conversions)
  - [General](08-conversions.md#general)
  - [Converting to Boolean Type](08-conversions.md#converting-to-boolean-type)
  - [Converting to Integer Type](08-conversions.md#converting-to-integer-type)
  - [Converting to Floating-Point Type](08-conversions.md#converting-to-floating-point-type)
  - [Converting to String Type](08-conversions.md#converting-to-string-type)
  - [Converting to Array Type](08-conversions.md#converting-to-array-type)
  - [Converting to Object Type](08-conversions.md#converting-to-object-type)
- [Lexical Structure](09-lexical-structure.md#lexical-structure)
  - [Scripts](09-lexical-structure.md#scripts)
  - [Grammars](09-lexical-structure.md#grammars)
  - [Lexical analysis](09-lexical-structure.md#lexical-analysis)
    - [General](09-lexical-structure.md#general)
    - [Comments](09-lexical-structure.md#comments)
    - [White Space](09-lexical-structure.md#white-space)
    - [Tokens](09-lexical-structure.md#tokens)
      - [General](09-lexical-structure.md#general-1)
      - [Names](09-lexical-structure.md#names)
      - [Keywords](09-lexical-structure.md#keywords)
      - [Literals](09-lexical-structure.md#literals)
        - [General](09-lexical-structure.md#general-2)
        - [Integer Literals](09-lexical-structure.md#integer-literals)
        - [Floating-Point Literals](09-lexical-structure.md#floating-point-literals)
        - [String Literals](09-lexical-structure.md#string-literals)
          - [Single-Quoted String Literals](09-lexical-structure.md#single-quoted-string-literals)
          - [Double-Quoted String Literals](09-lexical-structure.md#double-quoted-string-literals)
          - [Heredoc String Literals](09-lexical-structure.md#heredoc-string-literals)
          - [Nowdoc String Literals](09-lexical-structure.md#nowdoc-string-literals)
      - [Operators and Punctuators](09-lexical-structure.md#operators-and-punctuators)
- [Expressions](10-expressions.md#expressions)
  - [General](10-expressions.md#general)
  - [Primary Expressions](10-expressions.md#primary-expressions)
    - [General](10-expressions.md#general-1)
    - [Intrinsics](10-expressions.md#intrinsics)
      - [General](10-expressions.md#general-2)
      - [array](10-expressions.md#array)
      - [echo](10-expressions.md#echo)
      - [empty](10-expressions.md#empty)
      - [eval](10-expressions.md#eval)
      - [exit/die](10-expressions.md#exitdie)
      - [isset](10-expressions.md#isset)
      - [list](10-expressions.md#list)
      - [print](10-expressions.md#print)
      - [unset](10-expressions.md#unset)
    - [Anonymous Function Creation](10-expressions.md#anonymous-function-creation)
  - [Postfix Operators](10-expressions.md#postfix-operators)
    - [General](10-expressions.md#general-3)
    - [The `clone` Operator](10-expressions.md#the-clone-operator)
    - [The `new` Operator](10-expressions.md#the-new-operator)
    - [Array Creation Operator](10-expressions.md#array-creation-operator)
    - [Subscript Operator](10-expressions.md#subscript-operator)
    - [Function Call Operator](10-expressions.md#function-call-operator)
    - [Member-Selection Operator](10-expressions.md#member-selection-operator)
    - [Postfix Increment and Decrement Operators](10-expressions.md#postfix-increment-and-decrement-operators)
    - [Scope-Resolution Operator](10-expressions.md#scope-resolution-operator)
    - [Exponentiation Operator](10-expressions.md#exponentiation-operator)
  - [Unary Operators](10-expressions.md#unary-operators)
    - [General](10-expressions.md#general-4)
    - [Prefix Increment and Decrement Operators](10-expressions.md#prefix-increment-and-decrement-operators)
    - [Unary Arithmetic Operators](10-expressions.md#unary-arithmetic-operators)
    - [Error Control Operator](10-expressions.md#error-control-operator)
    - [Shell Command Operator](10-expressions.md#shell-command-operator)
    - [Cast Operator](10-expressions.md#cast-operator)
    - [Variable-Name Creation Operator](10-expressions.md#variable-name-creation-operator)
  - [`instanceof` Operator](10-expressions.md#instanceof-operator)
  - [Multiplicative Operators](10-expressions.md#multiplicative-operators)
  - [Additive Operators](10-expressions.md#additive-operators)
  - [Bitwise Shift Operators](10-expressions.md#bitwise-shift-operators)
  - [Relational Operators](10-expressions.md#relational-operators)
  - [Equality Operators](10-expressions.md#equality-operators)
  - [Bitwise AND Operator](10-expressions.md#bitwise-and-operator)
  - [Bitwise Exclusive OR Operator](10-expressions.md#bitwise-exclusive-or-operator)
  - [Bitwise Inclusive OR Operator](10-expressions.md#bitwise-inclusive-or-operator)
  - [Logical AND Operator (form 1)](10-expressions.md#logical-and-operator-form-1)
  - [Logical Inclusive OR Operator (form 1)](10-expressions.md#logical-inclusive-or-operator-form-1)
  - [Conditional Operator](10-expressions.md#conditional-operator)
  - [Coalesce Operator](10-expressions.md#coalesce-operator)
  - [Assignment Operators](10-expressions.md#assignment-operators)
    - [General](10-expressions.md#general-5)
    - [Simple Assignment](10-expressions.md#simple-assignment)
    - [byRef Assignment](10-expressions.md#byref-assignment)
  - [Compound Assignment](10-expressions.md#compound-assignment)
  - [Logical AND Operator (form 2)](10-expressions.md#logical-and-operator-form-2)
  - [Logical Exclusive OR Operator](10-expressions.md#logical-exclusive-or-operator)
  - [Logical Inclusive OR Operator (form 2)](10-expressions.md#logical-inclusive-or-operator-form-2)
  - [`yield` Operator](10-expressions.md#yield-operator)
  - [Script Inclusion Operators](10-expressions.md#script-inclusion-operators)
    - [General](10-expressions.md#general-6)
    - [The `include` Operator](10-expressions.md#the-include-operator)
    - [The `include_once` Operator](10-expressions.md#the-include_once-operator)
    - [The `require` Operator](10-expressions.md#the-require-operator)
    - [The `require_once` Operator](10-expressions.md#the-require_once-operator)
  - [Constant Expressions](10-expressions.md#constant-expressions)
- [Statements](11-statements.md#statements)
  - [General](11-statements.md#general)
  - [Compound Statements](11-statements.md#compound-statements)
  - [Labeled Statements](11-statements.md#labeled-statements)
  - [Expression Statements](11-statements.md#expression-statements)
  - [Selection Statements](11-statements.md#selection-statements)
    - [General](11-statements.md#general-1)
    - [The `if` Statement](11-statements.md#the-if-statement)
    - [The `switch` Statement](11-statements.md#the-switch-statement)
  - [Iteration Statements](11-statements.md#iteration-statements)
    - [General](11-statements.md#general-2)
  - [The `while` Statement](11-statements.md#the-while-statement)
  - [The `do` Statement](11-statements.md#the-do-statement)
  - [The `for` Statement](11-statements.md#the-for-statement)
  - [The `foreach` Statement](11-statements.md#the-foreach-statement)
  - [Jump Statements](11-statements.md#jump-statements)
    - [General](11-statements.md#general-3)
    - [The `goto` Statement](11-statements.md#the-goto-statement)
    - [The `continue` Statement](11-statements.md#the-continue-statement)
    - [The `break` Statement](11-statements.md#the-break-statement)
    - [The `return` Statement](11-statements.md#the-return-statement)
    - [The `throw` Statement](11-statements.md#the-throw-statement)
  - [The `try` Statement](11-statements.md#the-try-statement)
  - [The `declare` Statement](11-statements.md#the-declare-statement)
- [Arrays](12-arrays.md#arrays)
  - [General](12-arrays.md#general)
  - [Array Creation and Initialization](12-arrays.md#array-creation-and-initialization)
  - [Element Access and Insertion](12-arrays.md#element-access-and-insertion)
- [Functions](13-functions.md#functions)
  - [General](13-functions.md#general)
  - [Function Calls](13-functions.md#function-calls)
  - [Function Definitions](13-functions.md#function-definitions)
  - [Return typing](13-functions.md#return-typing)
  - [Type check modes](13-functions.md#type-check-modes)
  - [Variable Functions](13-functions.md#variable-functions)
  - [Anonymous Functions](13-functions.md#anonymous-functions)
- [Classes](14-classes.md#classes)
  - [General](14-classes.md#general)
  - [Class Declarations](14-classes.md#class-declarations)
  - [Class Members](14-classes.md#class-members)
  - [Dynamic Members](14-classes.md#dynamic-members)
  - [Constants](14-classes.md#constants)
  - [Properties](14-classes.md#properties)
  - [Methods](14-classes.md#methods)
  - [Constructors](14-classes.md#constructors)
  - [Destructors](14-classes.md#destructors)
  - [Inheritance](14-classes.md#inheritance)
  - [Methods with Special Semantics](14-classes.md#methods-with-special-semantics)
    - [General](14-classes.md#general-1)
    - [Method `__call`](14-classes.md#method-__call)
    - [Method `__callStatic`](14-classes.md#method-__callstatic)
    - [Method `__clone`](14-classes.md#method-__clone)
    - [Method `__debugInfo`](14-classes.md#method-__debuginfo)
    - [Method `__get`](14-classes.md#method-__get)
    - [Method `__invoke`](14-classes.md#method-__invoke)
    - [Method `__isset`](14-classes.md#method-__isset)
    - [Method `__set`](14-classes.md#method-__set)
    - [Method `__set_state`](14-classes.md#method-__set_state)
    - [Method `__sleep`](14-classes.md#method-__sleep)
    - [Method `__toString`](14-classes.md#method-__tostring)
    - [Method `__unset`](14-classes.md#method-__unset)
    - [Method `__wakeup`](14-classes.md#method-__wakeup)
  - [Serialization](14-classes.md#serialization)
  - [Predefined Classes](14-classes.md#predefined-classes)
    - [Class `Closure`](14-classes.md#class-closure)
    - [Class `Generator`](14-classes.md#class-generator)
    - [Class `__PHP_Incomplete_Class`](14-classes.md#class-__php_incomplete_class)
    - [Class `stdClass`](14-classes.md#class-stdclass)
    - [Predefined Error Classes](14-classes.md#predefined-error-classes)
      - [Class `Error`](14-classes.md#class-error)
      - [Class `ArithmeticError`](14-classes.md#class-arithmeticerror)
      - [Class `AssertionError`](14-classes.md#class-assertionerror)
      - [Class `DivisionByZeroError`](14-classes.md#class-divisionbyzeroerror)
      - [Class `ParseError`](14-classes.md#class-parseerror)
      - [Class `TypeError`](14-classes.md#class-typeerror)
- [Interfaces](15-interfaces.md#interfaces)
  - [General](15-interfaces.md#general)
  - [Interface Declarations](15-interfaces.md#interface-declarations)
  - [Interface Members](15-interfaces.md#interface-members)
  - [Constants](15-interfaces.md#constants)
  - [Methods](15-interfaces.md#methods)
  - [Predefined Interfaces](15-interfaces.md#predefined-interfaces)
    - [Interface `ArrayAccess`](15-interfaces.md#interface-arrayaccess)
    - [Interface `Iterator`](15-interfaces.md#interface-iterator)
    - [Interface `IteratorAggregate`](15-interfaces.md#interface-iteratoraggregate)
    - [Interface `Throwable`](15-interfaces.md#interface-throwable)
    - [Interface `Traversable`](15-interfaces.md#interface-traversable)
    - [Interface  `Serializable`](15-interfaces.md#interface--serializable)
- [Traits](16-traits.md#traits)
  - [General](16-traits.md#general)
  - [Trait Declarations](16-traits.md#trait-declarations)
  - [Trait Uses](16-traits.md#trait-uses)
- [Exception Handling](17-exception-handling.md#exception-handling)
  - [General](17-exception-handling.md#general)
  - [Class `Exception`](17-exception-handling.md#class-exception)
  - [Tracing Exceptions](17-exception-handling.md#tracing-exceptions)
  - [User-Defined Exception Classes](17-exception-handling.md#user-defined-exception-classes)
- [Namespaces](18-namespaces.md#namespaces)
  - [General](18-namespaces.md#general)
  - [Defining Namespaces](18-namespaces.md#defining-namespaces)
  - [Namespace Use Declarations](18-namespaces.md#namespace-use-declarations)
  - [Name Lookup](18-namespaces.md#name-lookup)
- [Grammar](19-grammar.md#grammar)
  - [General](19-grammar.md#general)
  - [Lexical Grammar](19-grammar.md#lexical-grammar)
    - [General](19-grammar.md#general-1)
    - [Comments](19-grammar.md#comments)
    - [White Space](19-grammar.md#white-space)
    - [Tokens](19-grammar.md#tokens)
      - [General](19-grammar.md#general-2)
      - [Names](19-grammar.md#names)
    - [Keywords](19-grammar.md#keywords)
    - [Literals](19-grammar.md#literals)
      - [General](19-grammar.md#general-3)
      - [Integer Literals](19-grammar.md#integer-literals)
      - [Floating-Point Literals](19-grammar.md#floating-point-literals)
      - [String Literals](19-grammar.md#string-literals)
    - [Operators and Punctuators](19-grammar.md#operators-and-punctuators)
  - [Syntactic Grammar](19-grammar.md#syntactic-grammar)
    - [Program Structure](19-grammar.md#program-structure)
    - [Variables](19-grammar.md#variables)
    - [Expressions](19-grammar.md#expressions)
      - [Primary Expressions](19-grammar.md#primary-expressions)
      - [Postfix Operators](19-grammar.md#postfix-operators)
      - [Unary Operators](19-grammar.md#unary-operators)
      - [instanceof Operator](19-grammar.md#instanceof-operator)
      - [Multiplicative Operators](19-grammar.md#multiplicative-operators)
      - [Additive Operators](19-grammar.md#additive-operators)
      - [Bitwise Shift Operators](19-grammar.md#bitwise-shift-operators)
      - [Relational Operators](19-grammar.md#relational-operators)
      - [Equality Operators](19-grammar.md#equality-operators)
      - [Bitwise Logical Operators](19-grammar.md#bitwise-logical-operators)
      - [Logical Operators (form 1)](19-grammar.md#logical-operators-form-1)
      - [Conditional Operator](19-grammar.md#conditional-operator)
      - [Coalesce Operator](19-grammar.md#coalesce-operator)
      - [Assignment Operators](19-grammar.md#assignment-operators)
      - [Logical Operators (form 2)](19-grammar.md#logical-operators-form-2)
      - [yield Operator](19-grammar.md#yield-operator)
      - [Script Inclusion Operators](19-grammar.md#script-inclusion-operators)
      - [Constant Expressions](19-grammar.md#constant-expressions)
    - [Statements](19-grammar.md#statements)
      - [General](19-grammar.md#general-4)
      - [Compound Statements](19-grammar.md#compound-statements)
      - [Labeled Statements](19-grammar.md#labeled-statements)
      - [Expression Statements](19-grammar.md#expression-statements)
      - [Iteration Statements](19-grammar.md#iteration-statements)
      - [Jump Statements](19-grammar.md#jump-statements)
      - [The try Statement](19-grammar.md#the-try-statement)
      - [The declare Statement](19-grammar.md#the-declare-statement)
    - [Functions](19-grammar.md#functions)
    - [Classes](19-grammar.md#classes)
    - [Interfaces](19-grammar.md#interfaces)
    - [Traits](19-grammar.md#traits)
    - [Namespaces](19-grammar.md#namespaces)
- [Bibliography](20-bibliography.md#bibliography)
