kkszymanowski/traitor
Traitor brings traits to Eloquent like first-class relations. Define reusable, composable model fragments and access them via $model->traitName, eager load with with('traitName'), and query through them—keeping models slim while sharing behavior and attributes.
A PHP package for automatically adding a trait use statement to a given class.
Via composer:
composer require kkszymanowski/traitor
use Traitor\Traitor;
Traitor::addTrait(FooTrait::class)->toClass(FooClass:class);
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);
use Traitor\Traitor;
$alreadyUses = Traitor::alreadyUses(FooClass::class, BarTrait::class);
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.
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;
}
How can I help you explore Laravel packages today?