# Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
# SPDX-License-Identifier: GPL-3.0-or-later
#
# PHPStan configuration for Joomla extension repositories.
# Extends the base MokoStandards config and adds Joomla framework class stubs
# so PHPStan can resolve Factory, CMSApplication, User, Table, etc.
# without requiring a full Joomla installation.

parameters:
    level: 5

    paths:
        - src

    excludePaths:
        - vendor
        - node_modules

    # Joomla framework stubs — resolved via the enterprise package from vendor/
    stubFiles:
        - vendor/mokoconsulting-tech/enterprise/templates/stubs/joomla.php

    # Suppress errors that are structural in Joomla's service-container architecture
    ignoreErrors:
        # Joomla's service-based dependency injection returns mixed from getApplication()
        - '#Cannot call method .+ on Joomla\\CMS\\Application\\CMSApplication\|null#'
        # Factory::getX() patterns are safe at runtime even when nullable in stubs
        - '#Call to static method [a-zA-Z]+\(\) on an interface#'

    reportUnmatchedIgnoredErrors: false
    checkMissingIterableValueType: false
    checkGenericClassInNonGenericObjectType: false
