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(8mo ago)0812↓33.3%MITPHPPHP ^8.1

Since Aug 27Pushed 8mo 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 1mo 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

35

—

LowBetter than 80% of packages

Maintenance61

Regular maintenance activity

Popularity16

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity46

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

243d 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.4k43.5M5.2k](/packages/larastan-larastan)[ekino/phpstan-banned-code

Detected banned code using PHPStan

2925.6M92](/packages/ekino-phpstan-banned-code)[staabm/phpstan-dba

2912.3M2](/packages/staabm-phpstan-dba)[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.

3462.2M52](/packages/shipmonk-dead-code-detector)[szepeviktor/phpstan-wordpress

WordPress extensions for PHPStan

3287.8M898](/packages/szepeviktor-phpstan-wordpress)[staabm/phpstan-todo-by

1991.8M55](/packages/staabm-phpstan-todo-by)

PHPackages © 2026

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