# Language Reference

- Basic syntax
  - PHP tags
  - Escaping from HTML
  - Instruction separation
  - Comments
- Types
  - Introduction
  - Type System
  - NULL
  - Booleans
  - Integers
  - Floating point numbers
  - Strings
  - Numeric strings
  - Arrays
  - Objects
  - Enumerations
  - Resources
  - Callables
  - Mixed
  - Void
  - Never
  - Relative class types
  - Singleton types
  - Iterables
  - Type declarations
  - Type Juggling
- Variables
  - Basics
  - Predefined Variables
  - Variable scope
  - Variable variables
  - Variables From External Sources
- Constants
  - Syntax
  - Predefined constants
  - Magic constants
- Expressions
- Operators
  - Operator Precedence
  - Arithmetic — Arithmetic Operators
  - Increment and Decrement — Incrementing/Decrementing Operators
  - Assignment — Assignment Operators
  - Bitwise — Bitwise Operators
  - Comparison — Comparison Operators
  - Error Control — Error Control Operators
  - Execution — Execution Operators
  - Logic — Logical Operators
  - String — String Operators
  - Array — Array Operators
  - Type — Type Operators
  - Functional — Functional Operators
- Control Structures
  - Introduction
  - if
  - else
  - elseif/else if
  - Alternative syntax for control structures
  - while
  - do-while
  - for
  - foreach
  - break
  - continue
  - switch
  - match
  - declare
  - return
  - require
  - include
  - require_once
  - include_once
  - goto
- Functions
  - User-defined functions
  - Function parameters and arguments
  - Returning values
  - Variable functions
  - Internal (built-in) functions
  - Anonymous functions
  - Arrow Functions
  - First class callable syntax
- Classes and Objects
  - Introduction
  - The Basics
  - Properties
  - Property Hooks
  - Class Constants
  - Autoloading Classes
  - Constructors and Destructors
  - Visibility
  - Object Inheritance
  - Scope Resolution Operator (::)
  - Static Keyword
  - Class Abstraction
  - Object Interfaces
  - Traits
  - Anonymous classes
  - Overloading
  - Object Iteration
  - Magic Methods
  - Final Keyword
  - Object Cloning
  - Comparing Objects
  - Late Static Bindings
  - Objects and references
  - Object Serialization — Serializing objects - objects in sessions
  - Covariance and Contravariance
  - Lazy Objects
  - OOP Changelog
- Namespaces
  - Overview — Namespaces overview
  - Namespaces — Defining namespaces
  - Sub-namespaces — Declaring sub-namespaces
  - Defining multiple namespaces in the same file
  - Basics — Using namespaces: Basics
  - Namespaces and dynamic language features
  - namespace keyword and __NAMESPACE__ — The namespace keyword and __NAMESPACE__ magic constant
  - Aliasing and Importing — Using namespaces: Aliasing/Importing
  - Global space
  - Fallback to global space — Using namespaces: fallback to the global space for functions and constants
  - Name resolution rules
  - FAQ — FAQ: things you need to know about namespaces
- Enumerations
  - Enumerations overview
  - Basic enumerations
  - Backed enumerations
  - Enumeration methods
  - Enumeration static methods
  - Enumeration constants
  - Traits
  - Enum values in constant expressions
  - Differences from objects
  - Value listing
  - Serialization
  - Why enums aren't extendable
  - Examples
- Errors
  - Basics
  - Errors in PHP 7
- Exceptions
  - Extending Exceptions
- Fibers
- Generators
  - Generators overview
  - Generator syntax
  - Comparing generators with Iterator objects
- Attributes
  - Attributes overview
  - Attribute syntax
  - Reading Attributes with the Reflection API
  - Declaring Attribute Classes
- References Explained
  - What References Are
  - What References Do
  - What References Are Not
  - Passing by Reference
  - Returning References
  - Unsetting References
  - Spotting References
- Predefined Variables
  - Superglobals — Built-in variables that are always available in all scopes
  - $GLOBALS — References all variables available in global scope
  - $_SERVER — Server and execution environment information
  - $_GET — Query string variables
  - $_POST — Form data from HTTP POST requests
  - $_FILES — HTTP File Upload variables
  - $_REQUEST — HTTP Request variables
  - $_SESSION — Session variables
  - $_ENV — Environment variables
  - $_COOKIE — HTTP Cookies
  - $php_errormsg — The previous error message
  - $http_response_header — HTTP response headers
  - $argc — The number of arguments passed to script
  - $argv — Array of arguments passed to script
- Predefined Exceptions
  - Exception
  - ErrorException
  - ClosedGeneratorException — The ClosedGeneratorException class
  - Error
  - ArgumentCountError
  - ArithmeticError
  - AssertionError
  - DivisionByZeroError
  - CompileError
  - ParseError
  - TypeError
  - ValueError
  - UnhandledMatchError
  - FiberError
  - RequestParseBodyException
- Predefined Interfaces and Classes
  - Traversable — The Traversable interface
  - Iterator — The Iterator interface
  - IteratorAggregate — The IteratorAggregate interface
  - InternalIterator — The InternalIterator class
  - Throwable
  - Countable — The Countable interface
  - ArrayAccess — The ArrayAccess interface
  - Serializable — The Serializable interface
  - Closure — The Closure class
  - stdClass — The stdClass class
  - Generator — The Generator class
  - Fiber — The Fiber class
  - WeakReference — The WeakReference class
  - WeakMap — The WeakMap class
  - Stringable — The Stringable interface
  - UnitEnum — The UnitEnum interface
  - BackedEnum — The BackedEnum interface
  - SensitiveParameterValue — The SensitiveParameterValue class
  - __PHP_Incomplete_Class — The __PHP_Incomplete_Class class
- Predefined Attributes
  - Attribute — The Attribute attribute
  - AllowDynamicProperties — The AllowDynamicProperties attribute
  - Deprecated — The Deprecated attribute
  - NoDiscard — The NoDiscard attribute
  - Override — The Override attribute
  - ReturnTypeWillChange — The ReturnTypeWillChange attribute
  - SensitiveParameter — The SensitiveParameter attribute
- Context options and parameters
  - Socket context options — Socket context option listing
  - HTTP context options — HTTP context option listing
  - FTP context options — FTP context option listing
  - SSL context options — SSL context option listing
  - Phar context options — Phar context option listing
  - Context parameters — Context parameter listing
  - Zip context options — Zip context option listing
  - Zlib context options — Zlib context option listing
- Supported Protocols and Wrappers
  - file:// — Accessing local filesystem
  - http:// — Accessing HTTP(s) URLs
  - ftp:// — Accessing FTP(s) URLs
  - php:// — Accessing various I/O streams
  - zlib:// — Compression Streams
  - data:// — Data (RFC 2397)
  - glob:// — Find pathnames matching pattern
  - phar:// — PHP Archive
  - ssh2:// — Secure Shell 2
  - rar:// — RAR
  - ogg:// — Audio streams
  - expect:// — Process Interaction Streams

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open