Tutorials Courses Interview Prep (100 Q&A) AI Tools (50) Developer Tools (50) Tracks Pricing Plans Blog & Articles Contact Us
Modern PHP 8.x & Internals 5-8 Years (Senior) Medium Production Scenario

How does Type Juggling and Strict Typing (`declare(strict_types=1);`) affect function returns, arrays, and coercion in PHP 8.x?

Real-World Scenario / Incident Description

An automated billing function passed a string `"100.50"` to a float parameter. In one file it worked, but in another it threw a `TypeError`.

800 views • Updated 1 month ago

File-Level Scope of strict_types

declare(strict_types=1); is per-file and affects function calls made FROM that specific file, not the file declaring the function.

  • If File A has strict_types=1 and calls calculateTax("100.50"), PHP throws TypeError.
  • If File B does NOT have strict_types=1 and calls the same calculateTax("100.50"), PHP coerces the string to float 100.50.
  • Best practice: Enforce declare(strict_types=1); across all project files via code standards tools (PHP-CS-Fixer / Pint).
Related Concepts: #Strict Types #Type Juggling #TypeError #PHP 8