Article
Passing Null to Non-Nullable Parameters (PHP 8.1)
Clear PHP 8.1 deprecations caused by passing null into internal functions that declare non-nullable parameters.
PHP 8.1 deprecated passing null to internal function parameters that are not nullable. The values often came from array keys, database columns, or loosely typed helpers. Official migration notes under migration81 document the broader 8.1 hardening; this page focuses on the null-parameter pattern.
# LEGACY — $name may be null from request/db
strlen($name);
str_contains($haystack, $needle); // when $needle is null
# MODERN — make the contract explicit
strlen($name ?? '');
str_contains($haystack, $needle ?? '');
# Better: reject illegal state early
if ($name === null) {
throw new InvalidArgumentException('name required');
}
strlen($name);
How to find call sites
- Enable deprecation logging on 8.1+ staging.
- Paste hotspots into PHP Deprecated Checker.
- Match messages via passing null to parameter deprecated.
Do not blanket-cast everything to string—some APIs should fail closed when null appears. Parent: deprecated hub. Related step: 8.0→8.1.
Related scanners: PHP Version Compatibility Checker · PHP Deprecated Checker.
Related tools
- Composer.json Validator Validate composer.json structure and common mistakes without running composer install.
- Legacy PHP Risk Checker Paste PHP source for a static scan that classifies removed APIs, deprecated calls, and security-sensitive leg…
- PHP Deprecated Checker Find deprecated functions and patterns in pasted PHP to prioritize modernization work.
- PHP Environment Compare Compare two PHP environment summaries to find directive and extension mismatches.
- PHP Modernization Roadmap Build an ordered migration stage list from your PHP version, framework, Composer, database API, and deploymen…
- PHP Version Compatibility Checker Scan pasted PHP for version-sensitive syntax and APIs to plan upgrades across PHP releases.
Related reading
- Composer Modernization Center Add Composer to legacy PHP projects, migrate includes to autoloading, set platform constraints, and replace a…
- PHP 5 to Modern PHP: Complete Incremental Migration Guide A deep, production-minded path from PHP 5.x codebases to supported PHP 8.x: removed extensions, charset, PDO,…
- PHP Security Modernization for Legacy Applications Upgrade inherited PHP security practices: prepared statements, password hashing, sessions, CSRF, XSS escaping…
- PHP 7 to PHP 8 Migration Guide Deep guide to PHP 8.0 breaking changes that matter for PHP 7 applications, with upgrade tactics through suppo…
- Inheriting a Legacy PHP Application A first-30-days playbook for developers handed an unfamiliar PHP codebase: runtime truth, risk triage, and sa…