PHPackages                             kkszymanowski/traitor - 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. kkszymanowski/traitor

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

kkszymanowski/traitor
=====================

Add a trait use statement to existing PHP class

1.1.0(2y ago)1305.2M—3.1%3[1 issues](https://github.com/KKSzymanowski/Traitor/issues)16MITPHPPHP &gt;=5.4

Since Jun 13Pushed 2y ago2 watchersCompare

[ Source](https://github.com/KKSzymanowski/Traitor)[ Packagist](https://packagist.org/packages/kkszymanowski/traitor)[ RSS](/packages/kkszymanowski-traitor/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (9)Dependencies (2)Versions (12)Used By (16)

Traitor
=======

[](#traitor)

[![StyleCI](https://camo.githubusercontent.com/1f8a48ad5b448b1ea790a280bb27a361e8f6c2b5ef803b93e1dc1d061e75e287/68747470733a2f2f7374796c6563692e696f2f7265706f732f36303939343433352f736869656c643f7374796c653d666c6174)](https://styleci.io/repos/60994435)[![Build Status](https://camo.githubusercontent.com/d004eea1991a967ebadaa3e7f569cdea38c431ffcb43e2d212a2adbce61e0350/68747470733a2f2f7472617669732d63692e6f72672f4b4b537a796d616e6f77736b692f54726169746f722e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/KKSzymanowski/Traitor)[![Latest Stable Version](https://camo.githubusercontent.com/f848415845fe8aad2e5ff887bd699ee6ef3ca205aa4fd5e802f686467faf34b3/68747470733a2f2f706f7365722e707567782e6f72672f6b6b737a796d616e6f77736b692f74726169746f722f762f737461626c65)](https://packagist.org/packages/kkszymanowski/traitor)[![License](https://camo.githubusercontent.com/e658f57e7ea0d92a2faf6eee3ca3b126666e410c838e0479387c6b5fd50796a8/68747470733a2f2f706f7365722e707567782e6f72672f6b6b737a796d616e6f77736b692f74726169746f722f6c6963656e7365)](https://packagist.org/packages/kkszymanowski/traitor)

A PHP package for automatically adding a `trait use statement` to a given class.

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

[](#installation)

Via composer:

```
composer require kkszymanowski/traitor

```

Usage
-----

[](#usage)

- Basic usage:

```
use Traitor\Traitor;

Traitor::addTrait(FooTrait::class)->toClass(FooClass:class);

```

- Add multiple traits:

```
use Traitor\Traitor;

Traitor::addTraits([
    FooTrait::class,
    BarTrait::class,
    BazTrait::class
])->toClass(FooClass::class);

//or

Traitor::addTrait(FooTrait::class)
       ->addTrait(BarTrait::class)
       ->addTrait(BazTrait::class)
       ->toClass(FooClass::class);
```

- Check if class already uses trait:

```
use Traitor\Traitor;

$alreadyUses = Traitor::alreadyUses(FooClass::class, BarTrait::class);
```

- Only generate output without changing files:

```
use Traitor\Handlers\AbstractTreeHandler;

$handler = new AbstractTreeHandler(file($originalFilePath), FooTrait::class, BarClass::class);

$newContent = $handler->handle()->toString();
```

Note, that `AbstractTreeHandler` accepts input file as an array of lines, such as one produced from `file()` call.

Behavior
--------

[](#behavior)

Adding a new trait use statement does not change in any way formatting of your file(or at least it shouldn't).

If the trait is not present in the `use` section below the namespace declaration, it will be also added there, below any existing imports.

If it's not present in the `use` section in the class body, it will be added there above first existing use statement, on it's own line:

```
use Bar\PreviouslyExistingTrait;
use Baz\NewlyAddedTrait; // Here

class Foo
{
    use NewlyAddedTrait; // And here
    use PreviouslyExistingTrait;
}

```

###  Health Score

45

—

FairBetter than 93% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity57

Moderate usage in the ecosystem

Community22

Small or concentrated contributor base

Maturity65

Established project with proven stability

 Bus Factor1

Top contributor holds 94% 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 ~309 days

Recently: every ~586 days

Total

10

Last Release

840d ago

Major Versions

0.x-dev → 1.0.02022-03-02

PHP version history (2 changes)0.1.0PHP &gt;=5.5.9

0.2.0PHP &gt;=5.4

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/13980973?v=4)[Kuba Szymanowski](/maintainers/KKSzymanowski)[@KKSzymanowski](https://github.com/KKSzymanowski)

---

Top Contributors

[![KKSzymanowski](https://avatars.githubusercontent.com/u/13980973?v=4)](https://github.com/KKSzymanowski "KKSzymanowski (47 commits)")[![StyleCIBot](https://avatars.githubusercontent.com/u/11048387?v=4)](https://github.com/StyleCIBot "StyleCIBot (3 commits)")

---

Tags

phptraitadd

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/kkszymanowski-traitor/health.svg)

```
[![Health](https://phpackages.com/badges/kkszymanowski-traitor/health.svg)](https://phpackages.com/packages/kkszymanowski-traitor)
```

###  Alternatives

[ebidtech/collection

A set of interfaces and traits to speed up the creation of collections

13119.8k6](/packages/ebidtech-collection)[iteks/laravel-enum

A comprehensive Laravel package providing enhanced enum functionalities, including attribute handling, select array conversions, and fluent facade interactions for robust enum management in Laravel applications.

2516.7k](/packages/iteks-laravel-enum)

PHPackages © 2026

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