includes: - phpstan-baseline.neon - phpstan-rules.neon parameters: level: 8 paths: - src excludePaths: - src/Framework/View/cache - src/Framework/Cache/storage - src/Application/Security/Events/ - src/*/views/*.php # Template files often have undefined vars ignoreErrors: # Limit dynamic property access ignores to view-related code - message: '#Access to an undefined property#' paths: - src/Framework/View/* - src/*/views/* # Ignore reflection-based dependency injection patterns (container wiring) - '#Instantiated class .* not found#' # Template variables are passed dynamically (only in views) - message: '#Variable \$\w+ might not be defined#' paths: - src/*/views/* # Request DTOs are hydrated by framework - '#Class .* has an uninitialized readonly property#' # Controller request properties are populated by request handlers - '#Class .*Request has an uninitialized readonly property#' reportUnmatchedIgnoredErrors: false tmpDir: var/phpstan phpVersion: 80400 # PHP 8.4 # Type hints for dynamic container resolution universalObjectCratesClasses: - App\Framework\DI\Container # Bootstrap file for autoloading and framework initialization bootstrapFiles: - tests/bootstrap.php