PHPackages                             inviqa/phpstan-magento1 - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. inviqa/phpstan-magento1

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

inviqa/phpstan-magento1
=======================

Extension for PHPStan to allow analysis of Magento 1 code.

v0.1.5(7y ago)418.1k8MITPHP

Since Apr 12Pushed 6y ago7 watchersCompare

[ Source](https://github.com/inviqa/phpstan-magento1)[ Packagist](https://packagist.org/packages/inviqa/phpstan-magento1)[ RSS](/packages/inviqa-phpstan-magento1/feed)WikiDiscussions master Synced 2w ago

READMEChangelogDependencies (1)Versions (2)Used By (0)

phpstan-magento1 extension
==========================

[](#phpstan-magento1-extension)

Extension for [PHPStan](https://github.com/phpstan/phpstan) to allow analysis of Magento 1 code.

Currently it assumes Magento is installed in the public/ directory of the project root. Further work is needed in phpstan itself to allow more intellegence for extensions to be more customised whilst working with both phpstan/phpstan and phpstan/phpstan-shim.

By default phpstan with this extension will test public/app/code/local only.

Usage
-----

[](#usage)

Add `phpstan.neon` to your Magento 1 project.

Make sure it has

```
includes:
    - vendor/inviqa/phpstan-magento1/extension.neon
```

Whilst this extension depends on phpstan/phpstan, it can also depend on phpstan/phpstan-shim, which decouples its dependencies from the project's own use of them.

With coupled dependencies:

```
composer require inviqa/phpstan-magento1 phpstan/phpstan
```

With uncoupled phar package:

```
composer require inviqa/phpstan-magento1 phpstan/phpstan-shim
```

Alternative Magento path
------------------------

[](#alternative-magento-path)

Add to the project's phpstan.neon:

```
parameters:
    paths:
        - %currentWorkingDirectory%/path/to/magento/app/code/local
    excludes_analyse:
        - %currentWorkingDirectory%/path/to/magento/app/code/local/*/*/data/*
        - %currentWorkingDirectory%/path/to/magento/app/code/local/*/*/sql/*
    autoload_files:
        - %currentWorkingDirectory%/path/to/magento/app/Mage.php
```

Known Issues
============

[](#known-issues)

\## Data/SQL scripts can't be tested

Since these scripts use a presumed $this variable due to being included from a setup class, work is needed to:

- work out the correct setup class
- somehow make phpstan aware of it for the file

Magento fluent interface classes aren't fluent for sub-classes
--------------------------------------------------------------

[](#magento-fluent-interface-classes-arent-fluent-for-sub-classes)

This causes subsequent calls to the class object to assume the scope of the super-class that defined the return type.

This is due to their PHPDoc not using the up to date way of specifying fluency with subclasses using "$this" as the type.

Options to resolve:

- Avoid using the fluent interface on these classes
- Patch Magento code to use $this as the return type
- Define @method PHPDoc for the called methods in the subclass
- Add the error to the parameters.ignoreErrors phpstan configuration to ignore it - this loses the ability to properly type the subseqent methods of the fluent interface

Mage\_Core\_Model\_Abstract::load $id is not an integer
-------------------------------------------------------

[](#mage_core_model_abstractload-id-is-not-an-integer)

This is due to an inadequate PHPDoc of the load method of the Mage\_Core\_Model\_Abstract class. It should have used a "mixed" type to support when a field is specified as the 2nd argument.

PHPStan extensions have no way of altering existing method parameters.

Options to resolve:

- Patch the Magento code to use mixed as the $id parameter type
- If available in the chain of super-classes, use the loadBy{Field} method, which has the correct parameter typing
- Define @method PHPDoc in your class (which extends Mage\_Core\_Model\_Abstract or a subclass of it) with the correct parameter types
- Add the error to the parameters.ignoreErrors phpstan configuration to ignore it

###  Health Score

30

—

LowBetter than 62% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity27

Limited adoption so far

Community15

Small or concentrated contributor base

Maturity50

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 92.9% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

2636d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/6b33b247b870cf3add3d95961e04f7b87c63d0817af5c373837c28ae3c1aeaf0?d=identicon)[inviqa-session](/maintainers/inviqa-session)

---

Top Contributors

[![andytson-inviqa](https://avatars.githubusercontent.com/u/11387086?v=4)](https://github.com/andytson-inviqa "andytson-inviqa (13 commits)")[![kierenevans](https://avatars.githubusercontent.com/u/1554709?v=4)](https://github.com/kierenevans "kierenevans (1 commits)")

### Embed Badge

![Health badge](/badges/inviqa-phpstan-magento1/health.svg)

```
[![Health](https://phpackages.com/badges/inviqa-phpstan-magento1/health.svg)](https://phpackages.com/packages/inviqa-phpstan-magento1)
```

###  Alternatives

[ticketswap/phpstan-error-formatter

A minimalistic error formatter for PHPStan

87670.5k53](/packages/ticketswap-phpstan-error-formatter)[slam/phpstan-extensions

Slam extension of phpstan

712.5M77](/packages/slam-phpstan-extensions)[tomasvotruba/ctor

Prefer constructor over always called setters

1524.9k19](/packages/tomasvotruba-ctor)[ergebnis/rector-rules

Provides rules for rector/rector.

10226.6k48](/packages/ergebnis-rector-rules)[shopsys/coding-standards

Coding standards definition compatible with PSR-2

20276.8k20](/packages/shopsys-coding-standards)[johnbillion/wp-compat

PHPStan extension to help verify that your PHP code is compatible with a given version of WordPress

25152.4k15](/packages/johnbillion-wp-compat)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
