Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode Skip to content
PHP tips and tricks
Light Logo Dark Logo
PHP tips and tricks

Contents:

  • Introduction
  • PHP tips and tricks
    • When $café != $café
    • Leading Nor Trailing
    • Parsing INI With PHP Options
    • null For The Rest
    • array_map() with NULL
    • Check When A String Is An Integer
    • $_FILES’ type Is Not Safe
    • Infinite Recursion
    • An Enum With An Interface
    • Reference In Array
    • Duplicate Keys In JSON
    • Binary And Back
    • echo And print
    • Less Arguments In Child Method
    • strtr() Does Only One Pass
    • basename() As A str_replace()
    • explode() negative third argument
    • Interface Implemented Too Low
    • What Array Is A List
    • Closure::getCurrent() To Reach The Closure
    • A Non-transitive Comparison
    • Chained Assignation Skips __get()
    • eval() And __FILE__
    • Fiber Throws Where The Fiber Is
    • Infinite Operations
    • array_find() And array_find_keys()
    • Readonly Class Must Match Its Parent
    • The undefined Keyword
    • SQL In Memory
    • The Unreachable Method
    • min() And max() For Interval
    • Extra ::class
    • Other Types For A Property
    • Larger Than Int
    • Duplicate Type
    • Yield Or Return
    • Multiple Method In Interface
    • Operator Overloading
    • Three Return Errors
    • array_unique() Is Slow
    • Cloning Static Variable
    • Datetime And Leap Second
    • Silent Type Cast
    • Objects As Keys In Foreach
    • isset() On Uninitialized Properties
    • Recycle Generator
    • Of Integers And Floats
    • max() On Strings
    • e And Euler
    • Closure On Constructor
    • ++ Riddle
    • Oversigned Integers
    • Local Variable Cost
    • Array Items By Value
    • Not Set But Exists
    • Sorting Enum
    • Hypotenuse In Action
    • Spaceship Always False
    • Inverted Spaceship Results
    • isset(), empty() And the Magic Methods
    • Comparing Arrays And Object
    • Mixed Compatibility
    • Where Did The Comma Go?
    • Argument Renaming
    • When htmlemtities() Is Failing
    • Static Arrow Function
    • defined() In Action
    • expm1() And log1p()
    • Is A Class Constant Set?
    • preg_split() Magic
    • Comparing NAN
    • array_unique() And Enum
    • Display A Tree Natively
    • Speed Up CSV Write To Disk
    • php://memory And Maxmemory
    • ::parent Operator
    • Stuttering PHP
    • Riddle: $this<-code
    • Multiple Const Types
    • Replacing PHP http Wrapper
    • Cast But Not A Cast
    • Hexadecimal Separator
    • Call echo With Commas
    • Reusing Decimals For Bananas
    • Where To Put The Cast?
    • Unpacking A Single Element Array
    • Abstract Or Not
    • (int) And (ant)
    • Cast In Const
    • global Overwrites
    • Property Hooks And Default Values
    • Static And Not Static Method
    • intval() And Its Arguments
    • Easy Map
    • Returning Void
    • Casting An Enum Case
    • Dynamic Class Constant Edge Cases
    • Dynamic Enum Cases
    • Yield And Keys
    • Array Callback Index
    • Time Of Closure Creation
    • Coalesce And The Fatal Error
    • Weakmap And Enums
    • parent In Function
    • isset() And The Fatal Error
    • All PHP Dereferencements
    • No Property Beyond Limits
    • Can’t Be Compatible With Less Arguments
    • Arrow Functions Import Variables By Values
    • Never Is The Lowest Ranking Type
    • The Never Function Arrow
    • No Rewrite For Exit
    • Alias Conflicts
    • Not All Incremented Strings Are Deprecated
    • get_class() Or ::class?
    • No Binding But With Original
    • Infinite foreach()
    • Who Modifies This Property?
    • mixed Is Not No Type
    • The Recursive array_merge()
    • $GLOBALS Is Not Defined
    • Cast Private To Array
    • Properties In Interfaces
    • Bitwise Operations On String
    • Typed Variables
    • Type And Reference
    • Chaining Spaceship
    • parse_str() Edge Cases
    • Cast A Closure To Array
    • list() Does Not Type
    • Triple Plus Operator
    • Function Name In A Method
    • PHP Quine
    • Named Parameter In An Array
    • self Is A Valid Type On A Closure
    • Keep Interface New Argument Compatible
    • Undefined Constant A On Its Line Of Definition
    • http_build_query() And Enumerations
    • Cannot indirectly modify readonly
    • Ellipsis And Coalesce
    • namespace namespace
    • Namespace, But Far In The Name
    • No Hidden Nullable
    • Remove Last Item In An Array
    • Cancelling Native Function
    • Classes Constant Disambiguation With Parenthesis
    • compact() Is Recursive
    • No Final Parameter
    • Is Not A NAN
    • Impossible Named Arguments
    • func_get_args() Skips Variadic
    • Ellipsis With Array Parameters
    • Named Parameter Inheritance
    • __invoke() On New
    • Method Or Property?
    • No More Class _
    • Method Not Property Name Must Be String
    • Static Properties
    • The New And The Parenthesis
    • Fluent Function
    • Cannot Use Isset On Expression, So Use What?
    • Constant Redefinition
    • No Class Constant In String
    • Return Int Not Bool
    • By Reference, Error Or Notice?
    • Call Function With Strings
    • Non Empty Match
    • Named Sqlite3 In Memory
    • Variable Creation
    • All Enum Cases
    • Unicode Comments
    • Datetime Object, And Years
    • Escaping A Regex
    • Every Anonymous Class Is Different
    • instanceof With Variables
    • Undefined Variable
    • Compatible Signature
    • private Is Relaxed
    • Class Implement No More
    • Variadic Are Typed And Defaulted
    • array_column() To Hash
    • \array Was Customizable
    • array Is Not An Array
    • array_map_assoc() With Keys
    • array_map() Goes Full Throttle
    • Typed Array
    • Initialize Readonly On Child
    • Silent Optimisation Of Variables
    • Modify String With Array Syntax
    • No Force Object To String
    • __invoke() Method And Properties
    • Constructor Needed
    • No Self Referencing Constants
    • Deanonymize Class
    • Noscream On Ellipsis
    • Incompatible Promoted Readonly
    • Where Is The Semicolon?
    • Self As Attribute
    • Reading Micro-seconds
    • Promoted Properties Compatibility
    • Enum Are Not Linted
    • Sorting With Minus
    • Override With Interface
    • Send An Argument To Generator
    • PHP Integer Format
    • Compatible Only Interface
    • No Cast In Constant Expressions
    • Lots Of Silly Arguments
    • Child Of Attribute Is Not An Attribute
    • Dynamic Class Constant
    • The Function Method
    • Match() With Multiple Values
    • Interfaces Constants Conflicts
    • Foreach() Skips Uninitialized Properties
    • Casting And Power
    • Attribute Without Class
    • Class Is A Valid Type
    • Float Precision
    • Store Float As Index
    • Case Insensitive Cast
    • $this $this
    • No Returntype But Still, Only String
    • No Unknown For array_merge()
    • No Returntype Enforced
    • As As As
    • No DNF For Catch
    • new On Object
    • Unfinished Class Doesn’t Compile
    • Yield, Not Return By Reference
    • class_exists() With Enums
    • No Semicolon In Sight
    • glob() With Hidden Files
    • A Function Called file_append_contents()
    • array_reduce() To Filter And Alter
    • $this Is Not Of The Current Class
    • Class Constants With Different Types
    • No Change To $this
    • file_put_contents() With Array Argument
    • Get The Generator
    • Redefine Native Functions
    • A Static Method Cannot Call A Non Static Method
    • Declared Before Or After
    • Cast Is So Strong
    • Roman Loops
    • Finally Catches Exception
    • Always Compatible Variadic
    • Yield, Not Return
    • try, catch, finally Are All Optional
    • null Or Boolean As Array
    • Hide Sensitive Parameter
    • No Property In Interface
    • The Uncallable Function
    • Easy Wither Call
    • Array Is Full
    • Const Without Parenthesis
    • Cast Are Case Insensitive
    • Array And Object Syntax, Not The Same Error
    • When Space Matters
    • array array = array()
    • Cannot Yield And Never
    • Class Invasion Both Ways
    • Typed By Enum
    • Change A Static Variable Outside Its Function
    • Scalar Types Are Unqualified
    • array_append() And Short Assignation
    • Coalesce And Null
    • All Classes Aliases
    • Mixed And Untyped Are Not Compatible Types
    • Abstract Constants
    • Cannot Static Static Property
    • More Attribute Usage
    • Run Any Script In A Phar
    • Static Variable Outside A Method
    • Enumeration’s Cases Comparisons
    • All Static Curly Syntaxes And One Wrong
    • No Such Function As Empty
    • Strange –> Operator
    • Unexpected Keys In Array
    • Recursive Generator
    • Documenting Parameters
    • Catch Is Optional
    • Void Parameter In array_keys()
    • Unsetting Properties Surprises
    • Multiple Aliases
    • Plus Plus Minus Minus
    • Constants Can Be Impossible
    • Constants Are Mutable
    • Quick DTO Or VO Copy
    • Stealth Generator
    • Quick Serialize
    • Clone Clone Clone
    • Set readonly Properties Outside The Class
    • Exception Polymorphism
    • Exponential Minus One
    • PHP Infinity Is Reachable
    • Negative Squares
    • Negating An Assignation
    • Numeric Separators Inside A String?
    • Identifier Confusions
    • Relaxed Syntax With Const
    • Closure To Call
    • Get $this In A Static
    • How To array_intersect_uassoc_insensitive()
    • Class And Constant Confusion
    • Don’t Forget To Yield
    • Inconsistent Constructor Signatures
    • foreach() With All The Same Keys
    • Battle Of Definition
    • Variadic All The Yields
    • Refactoring strpos()
    • is_a() Versus Instanceof
    • Exporting Properties
    • Another Cast To Int
    • ReturnTypeWillChange Is For All
    • URL As Comments
    • Coalesce And Assignation
    • Missing Methods Are Fatal
    • Only Initialize With Short Assignation Coalesce
    • Keys Are Integers Whenever Possible
    • Fast Creation Of stdClass Objects
    • An Elephpant In The Code
    • Internal Static Call
    • strict_types Exceptions
    • Playing With Integers Limits
    • Signature Compatibility Exception
    • Object Is Not A Type
    • Forgotten Throw
    • Keywords In Namespaces
    • No Warning For Unused Variables
    • Self In An Interface
    • instanceof Object
    • stdClass Object
    • A Case Of Misplaced Parenthesis
    • Checking For Names At Different Times
    • Integer Becomes Negative
    • Not All Strings In Arrays
    • Recursive Arrow Function
    • null Does Not Always Equal false
    • Recursive Closure
    • Cast Precedence
    • Enum As A Name
    • Type Is Not Always Returned
    • The Namespace Stack
    • Catch On Interfaces
  • Top 15 Most Popular Tips (July 2026)
  • Author index
  • Error Message index
Back to top
View this page

Top 15 Most Popular Tips (July 2026)¶

Based on visit data collected from php-tips.readthedocs.io.

  1. Less Arguments In Child Method

  2. Function Name In A Method

  3. Every Anonymous Class Is Different

  4. strtr() Does Only One Pass

  5. basename() As A str_replace()

  6. What Array Is A List

  7. Missing Methods Are Fatal

  8. Self In An Interface

  9. stdClass Object

  10. Typed Variables

  11. Constant Redefinition

  12. explode() negative third argument

  13. Interface Implemented Too Low

  14. Closure::getCurrent() To Reach The Closure

  15. array_find() And array_find_keys()

Next
Author index
Previous
Catch On Interfaces
Copyright © 2023-2026, Damien Seguy - [Exakat](https://www.exakat.io/)
Made with Sphinx and @pradyunsg's Furo