PHPackages                             alexsvorada/phpstan-espocrm - 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. [Testing &amp; Quality](/categories/testing)
4. /
5. alexsvorada/phpstan-espocrm

ActivePhpstan-extension[Testing &amp; Quality](/categories/testing)

alexsvorada/phpstan-espocrm
===========================

PHPStan rules for EspoCRM development

v1.0.2(9mo ago)0864↓40%MITPHPPHP ^8.1

Since Aug 27Pushed 9mo agoCompare

[ Source](https://github.com/alexsvorada/phpstan-espocrm)[ Packagist](https://packagist.org/packages/alexsvorada/phpstan-espocrm)[ Docs](https://github.com/alexsvorada/phpstan-espocrm)[ RSS](/packages/alexsvorada-phpstan-espocrm/feed)WikiDiscussions main Synced 2d ago

READMEChangelog (1)Dependencies (1)Versions (4)Used By (0)

EspoCRM PHPStan Rules
=====================

[](#espocrm-phpstan-rules)

> PHPStan extension providing custom rules for EspoCRM development to enforce coding standards and best practices.

Table of Contents
-----------------

[](#table-of-contents)

- [Requirements](#requirements)
- [Installation](#installation)
- [Rules](#rules)
- [Usage](#usage)

Requirements
------------

[](#requirements)

- [PHP](https://www.php.net/) (&gt;= 8.1)
- [PHPStan](https://phpstan.org/) (&gt;= 2.1)

Installation
------------

[](#installation)

### 1. Install via Composer

[](#1-install-via-composer)

```
composer require --dev alexsvorada/phpstan-espocrm
```

### 2. Add to your phpstan.neon

[](#2-add-to-your-phpstanneon)

```
includes:
    - vendor/alexsvorada/phpstan-espocrm/extension.neon
```

Rules
-----

[](#rules)

This extension provides the following PHPStan rules for EspoCRM:

### Entity Rules

[](#entity-rules)

- **DefineEntityTypeConstantRule**: Ensures entities define the `ENTITY_TYPE` constant
- **DefineTemplateTypeConstantRule**: Ensures entities define template type constants when needed
- **NoEntityManagerInEntityRule**: Prevents direct EntityManager usage in entity classes

### Service Rules

[](#service-rules)

- **CallParentConstructorRule**: Ensures parent constructor is called in service classes
- **ServiceMustExtendRecordRule**: Ensures services extend the appropriate Record class

### Hook Rules

[](#hook-rules)

- **NoSameEntitySaveRule**: Prevents saving the same entity within hooks to avoid infinite loops
- **SaveRestrictedEntityFieldsRule**: Prevents saving restricted entity fields in hooks
- **RequireOrderPropertyRule**: Ensures hooks define the required `$order` property

### Controller Rules

[](#controller-rules)

- **OnlyOverrideParentMethodsRule**: Ensures controllers only override parent methods, not create arbitrary ones

Usage
-----

[](#usage)

After installation, run PHPStan as usual:

```
vendor/bin/phpstan analyse
```

The rules will automatically be applied to your EspoCRM codebase, helping maintain code quality and prevent common issues.

Development
-----------

[](#development)

This extension follows EspoCRM coding standards and provides rules to enforce best practices in EspoCRM module development.

###  Health Score

34

—

LowBetter than 75% of packages

Maintenance56

Moderate activity, may be stable

Popularity17

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity47

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% 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

Every ~11 days

Total

3

Last Release

289d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/136394425?v=4)[Alex](/maintainers/alexsvorada)[@alexsvorada](https://github.com/alexsvorada)

---

Top Contributors

[![alexsvorada](https://avatars.githubusercontent.com/u/136394425?v=4)](https://github.com/alexsvorada "alexsvorada (2 commits)")

---

Tags

PHPStanstatic analysiscode qualityespocrm

### Embed Badge

![Health badge](/badges/alexsvorada-phpstan-espocrm/health.svg)

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

###  Alternatives

[larastan/larastan

Larastan - Discover bugs in your code without running it. A phpstan/phpstan extension for Laravel

6.5k55.4M8.4k](/packages/larastan-larastan)[phpstan/phpstan-symfony

Symfony Framework extensions and rules for PHPStan

79475.7M2.2k](/packages/phpstan-phpstan-symfony)[shipmonk/dead-code-detector

Dead code detector to find unused PHP code via PHPStan extension. Can automatically remove dead PHP code. Supports libraries like Symfony, Doctrine, PHPUnit etc. Detects dead cycles. Can detect dead code that is tested.

4853.5M91](/packages/shipmonk-dead-code-detector)[phpstan/phpstan-doctrine

Doctrine extensions for PHPStan

67272.8M1.4k](/packages/phpstan-phpstan-doctrine)[ekino/phpstan-banned-code

Detected banned code using PHPStan

3016.2M119](/packages/ekino-phpstan-banned-code)[staabm/phpstan-dba

2942.6M2](/packages/staabm-phpstan-dba)

PHPackages © 2026

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