A curated knowledge base and laboratory for PHP engineering.
- What is PHP?
- PHP history
- PHP features
- PHP code
- PHP features
- PHP code
- Literals, constants, variables
- Types
- Operators
- Control flow
- Built-in types
- Special
- Scalar
- Compound
- Arrays
- Array
- Array syntax
- Array definition and initialisation
- Array assignment and overwriting
- Array creating
- Array displaying
- Array modifying
- Array destroying
- Array values
- Array keys
- Array key type casting and overwriting
- Array elements
- Array element appending with array access operator
- Array elements creating
- Array elements accessing
- Array elements modifying
- Array elements destroying
- Indexed arrays
- Associative arrays
- Nested arrays
- Testing for array
- Array destructuring
- Array unpacking
- Array unpacking and key overwriting
- Array merging
- Array merging and key overwriting
- Array adding
- Array adding and key overwriting
- Array combining
- Array comparing
- Array sorting
- Array size
- Array internal pointer
- Iterating over array_and_reading elements
- Iterating over array and updating elements
- Passing array to the function
- Casting to array
- Casting from array
- Objects
- Object
- Object definition and initialisation
- Object assigning and overwriting
- Object creating
- Object displaying
- Object modifying
- Object destroying
- Object properties
- Object properties defining and initialising
- Dynamic properties
- Object properties accessing
- Object properties updating
- Testing for object
- Casting to object
- Casting from object
- Arrays
- Enumerations
- Functions
- Function
- Function variations
- Functions possible formatting
- Function with function definition
- Function with class definition
- Function call before definition
- Function conditional call after conditional definition
- Function calling function
- Function global scope
- Function arguments
- Passing arguments by value
- Passing arguments by reference
- Passing arguments
- Function arguments dafault value
- Function arguments variable number
- Function named arguments
- Function returning value
- Function with static variable
- Variable function
- Anonymous function (lambda)
- Anonymous function variations
- Closure
- Closure variations
- Closure binding by value
- Closure binding by reference
- Closure binding $this
- Static anonymous function
- Arrow function
- Arrow function binding
- Function as variable
- Callbacks
- Callbacks formatting
- Higher order functions
- Generators
- Generator
- Generator yielding values
- Generator yielding key - value pairs
- Generator yielding null
- Yielding element by value
- Yielding element by reference
- Generator calling generator
- Yielding from array
- Yielding from array with keys
- Yielding from generator
- Yielding from generator with keys
- Yielding from and keys collision
- Generator returning value
- Classes, interfaces, traits
- Classes
- Classes
- Class
- Class definition
- Class instantiation
- Class instantiation from a string
- Class instantiation from an expression
- Class instantiation from static, self and parent keywords
- Class instatiation by a factory method
- Class instantiation ways
- Object assigning to the variable, passing to the function and returning by the function
- Object access
- Class instatiation and immediate instance member access
- Readonly class
- Readonly class inheritance
- Class inheritance
- Class inheritance and class name resolution
- Class inheritance and covariance, contravariance, inheritance
- Class name resolution
- Class members
- Class members
- Class static members
- Class member visibility
- Class member visibility from the same class object
- Class members static access
- Class members dynamic access
- Class member access by static, self and parent keywords
- Class constant
- Class constant visibility modifiers
- Class constant type declarations
- Class property
- Class static property
- Class property definition
- Class property definition required modifier
- Class property visibility modifiers
- Class property declaration default visibility
- Class property asymetric visibility
- Class property asymetric visibility and inheritance property redefinition
- Class property type declarations
- Nullsafe properties
- Class property access
- Class typed property initialisation before access
- Class readonly property
- Class readonly property initialisation
- Class readonly property initialisation scope
- Class readonly property initialisation during cloning
- Class readonly property visibility
- Class readonly property interior mutability
- Class dynamic property
- Class method
- Class static method
- Class method visibility modifiers
- Class method visibility and polimorphism
- Class method type declarations
- Nullsafe methods
- Property and method with the same name
- Anonymous function property and method with the same name
- Class backed property hook
- Class asymetric backed property hook
- Class backed property hook contravariance
- Class backed property hook shorthand omitted parameter type
- Class backed property hook shorthand expression
- Class backed property hook and constructor promotion
- Class virtual property hook
- Constructors and destructors
- Objects
- Inheritance
- Class inheritance
- Extending class
- Base and derived class
- Multilevel inheritance
- Encapsulation
- Polimorphism
- Class inheritance and members visibility
- Class members visibility modifiers
- Class constant overriding and visibility
- Class property overriding and visibility
- Class static property overriding with visibility
- Class method overriding with visibility
- Class static method overriding with visibility
- Class inheritance and method overriding
- Class property hook overriding with visibility
- Class final constant
- Class final property
- Class final method
- Class final property hook
- Class constant access with visibility
- Class final constant access with visibility
- Class property access with visibility
- Class static property access with visibility
- Class readonly property access with visibility
- Class final property access with visibility
- Class method access with visibility
- Class static method access with visibility
- Class final method access with visibility
- Class property hook access with visibility
- Class inheritance and public members access
- Class members overriding and visibility compatibility
- Class method overriding and paramenter number compatibility
- Class method overriding and paramenter requireness compatibility
- Class method overriding and types compatibility
- Class property overloading
- Class method overloading
- Final class
- Static method call
- Non-static method call
- Forwarding method call
- Non-forwarding method call
forward_static_callfunctionself::vsstatic::member referencingstatic::vs$this->member referencing
- Anonymous classes
- Classes
- Abstract classes
- Interfaces
- Traits
- Trait
- Trait and reusability
- Trait members access
- Trait constant
- Trait property
- Trait static property
- Trait method
- Trait static method
- Trait abstract method
- Trait final method
- Multiple trait using
- Trait using trait
- Extending class and using trait
- Multiple trait using and conflict resolution
- Trait members visibility changing
- Classes
- Errors and exceptions
- Errors
- Exceptions
- Exception
- Throwing an exception
- Throwing a defined exception
- Throwing an exception as an expression
- Catching an exception
- Catching a defined exception
- Catching an exception and ommiting the caught variable
- Catching exceptions of various types
- Catching an exception of multiple types
- Code always executed
try-catch-finally- Throwing and catching an exception and returning a value
- Nesting
try-catchintry - Nesting
try-catchincatch - Rethrowing an exception in the catch block
- Rethrowing an exception in the catch block and throwing an exception in the finally block
- Exceptions hierarchy
- Attributes
- Reflections
- Built-in constructs & library
- Functions
- Methods
- Classes
- Language constructs
- Data structures
- Iterators
- Array iterator (SPL)
- Recursive array iterator (SPL)
- Iterator iterator (SPL)
- Recursive iterator iterator (SPL)
- Append iterator (SPL)
- Empty iterator (SPL)
- Limit iterator (SPL)
- No rewind iterator (SPL)
- Infinite iterator (SPL)
- Multiple iterator (SPL)
- Callback filter iterator (SPL)
- Recursive callback filter iterator (SPL)
- Caching iterator (SPL)
- Recursive caching iterator (SPL)
- Regex iterator (SPL)
- Recursive regex iterator (SPL)
- Filesystem iterator (SPL)
- Directory iterator (SPL)
- Recursive directory iterator (SPL)
- Glob iterator (SPL)
- Recursive tree iterator (SPL)
- Parent iterator
- Exceptions
- Exception
- Error
- Error exception
- Type error
- Invalid argument exception (SPL)
- Value error
- Argument count error
- Unexpected value exception (SPL)
- Bad function call exception (SPL)
- Bad method call exception (SPL)
- Arithmetic error
- Division by zero error
- Unhandled match error
- Assertion error
- Closed generator exception
- Logic exception (SPL)
- Length exception (SPL)
- Out of bounds exception (SPL)
- Out of range exception (SPL)
- Overflow exception (SPL)
- Underflow exception (SPL)
- Range exception (SPL)
- Domain exception (SPL)
- Runtime exception (SPL)
- Parse error
- Files
- Interfaces
- Standards
This project is licensed under the GPL-3.0 - see LICENSE.md.