PHPackages                             frankvanhest/phpstan-rules-no-magic - 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. frankvanhest/phpstan-rules-no-magic

ActiveLibrary[Testing &amp; Quality](/categories/testing)

frankvanhest/phpstan-rules-no-magic
===================================

PHPStan rules inspired by roave/dont https://github.com/Roave/Dont

v3.0.0(2y ago)043MITPHPPHP ~8.1.0 | ~8.2.0 | ~8.3.0

Since Sep 30Pushed 2y ago1 watchersCompare

[ Source](https://github.com/frankvanhest/phpstan-rules-no-magic)[ Packagist](https://packagist.org/packages/frankvanhest/phpstan-rules-no-magic)[ GitHub Sponsors](https://github.com/frankvanhest)[ RSS](/packages/frankvanhest-phpstan-rules-no-magic/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (4)Dependencies (5)Versions (6)Used By (0)

PHPStan - Rules - No Magic
==========================

[](#phpstan---rules---no-magic)

Basically these rules prevent you from using PHP magic methods. If you are looking for a Runtime usage prevention of these methods, use .

- [Installation](#installation)
- [Usage](#usage)
- [Contribution](#contribution)
- [License](#license)

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

[](#installation)

```
composer require frankvanhest/phpstan-rules-no-magic

```

Usage
-----

[](#usage)

Just include the following in your `phpstan.neon` file to prevent the methods `__call`, `__callStatic`, `__clone`, `__wakeup`, `__unserialize`, `unserialize`, `__get`, `__sleep`, `__serialize`, `serialize`, `__set` and `__toString`.

```
includes:
    - vendor/frankvanhest/phpstan-rules-no-magic/config/no-magic.neon
```

Of course, you can customize which methods should be prevented by choosing the desired rules.

For `__call`:

```
rules:
    - FrankVanHest\PhpStanRulesNoMagic\NoMagicCallRule
```

For `__callStatic`:

```
rules:
    - FrankVanHest\PhpStanRulesNoMagic\NoMagicCallStaticRule
```

For `__clone`:

```
rules:
    - FrankVanHest\PhpStanRulesNoMagic\NoMagicCloneRule
```

For `__wakeup`, `__unserialize` and `unserialize` (use of `Serializable` interface):

```
rules:
    - FrankVanHest\PhpStanRulesNoMagic\NoMagicDeserializeRule
```

For `__get`:

```
rules:
    - FrankVanHest\PhpStanRulesNoMagic\NoMagicGetRule
```

For `__sleep`, `__serialize` and `serialize` (use of `Serializable` interface):

```
rules:
    - FrankVanHest\PhpStanRulesNoMagic\NoMagicSerializeRule
```

For `__set`:

```
rules:
    - FrankVanHest\PhpStanRulesNoMagic\NoMagicSetRule
```

For `__toString`:

```
rules:
    - FrankVanHest\PhpStanRulesNoMagic\NoMagicToStringRule
```

Contribution
------------

[](#contribution)

Feel free to submit an issue of pull request. When it comes to a pull request I'm curious of how it improves this packages of which problem it may solve.

There are some requirements:

- Use PSR-12 for code styling
- Write a test for every meaningful change

License
-------

[](#license)

See [LICENCE](LICENSE.md)

###  Health Score

28

—

LowBetter than 54% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity8

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity65

Established project with proven stability

 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 ~121 days

Total

5

Last Release

843d ago

Major Versions

v1.0.0 → v2.0.02022-12-20

v2.x-dev → v3.0.02024-01-26

PHP version history (3 changes)v1.0.0PHP ~7.4.0 | ~8.0.0 | ~8.1.0

v2.0.0PHP ~8.0.0 | ~8.1.0 | ~8.2.0

v3.0.0PHP ~8.1.0 | ~8.2.0 | ~8.3.0

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/2206481?v=4)[Frank van Hest](/maintainers/FrankVanHest)[@frankvanhest](https://github.com/frankvanhest)

---

Top Contributors

[![frankvanhest](https://avatars.githubusercontent.com/u/2206481?v=4)](https://github.com/frankvanhest "frankvanhest (8 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/frankvanhest-phpstan-rules-no-magic/health.svg)

```
[![Health](https://phpackages.com/badges/frankvanhest-phpstan-rules-no-magic/health.svg)](https://phpackages.com/packages/frankvanhest-phpstan-rules-no-magic)
```

###  Alternatives

[vimeo/psalm

A static analysis tool for finding errors in PHP applications

5.8k77.5M6.7k](/packages/vimeo-psalm)[larastan/larastan

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

6.4k43.5M5.2k](/packages/larastan-larastan)[behat/behat

Scenario-oriented BDD framework for PHP

4.0k96.8M2.0k](/packages/behat-behat)[phpstan/phpstan-symfony

Symfony Framework extensions and rules for PHPStan

78268.9M1.5k](/packages/phpstan-phpstan-symfony)[phpstan/phpstan-doctrine

Doctrine extensions for PHPStan

66466.6M1.1k](/packages/phpstan-phpstan-doctrine)[spaze/phpstan-disallowed-calls

PHPStan rules to detect disallowed method &amp; function calls, constant, namespace, attribute, property &amp; superglobal usages, with powerful rules to re-allow a call or a usage in places where it should be allowed.

33120.0M375](/packages/spaze-phpstan-disallowed-calls)

PHPackages © 2026

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