berthott/laravel-targetable

Laravel Helper for targeting classes by their traits

Maintainers

👁 berthott

Package info

github.com/berthott/laravel-targetable

pkg:composer/berthott/laravel-targetable

Statistics

Installs: 898

Dependents: 6

Suggesters: 0

Stars: 0

Open Issues: 0

3.0.3 2023-06-30 08:54 UTC

Requires

Requires (Dev)

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT 5ffd616b57241b0b8809e739ab3622f7541b88fd

  • Jan Bladt <berthott.woop@web.de>

This package is auto-updated.

Last update: 2026-06-11 17:43:40 UTC


README

👁 test workflow

Laravel-Targetable

Laravel Helper for targeting classes by their traits.

Installation

$ composer require berthott/laravel-targetable

Usage

  • Create your own service inheriting berthott\Targetable\Services\TargetableService
  • Pass the trait you want to target, and the config name you chose
class TestService extends TargetableService
{
 public function __construct()
 {
 parent::__construct(YourTrait::class, 'your-config');
 }
}
  • For further details on possibilities on how to utilize this service have a look inside tests/BasicTargetable
  • You might use an interface instead of a trait by using Mode::Contract as a 3rd argument on TargetableService

Options

To change the default options add the following options to your librarys config file:

  • namespace: String or array with one ore multiple namespaces that should be monitored for the configured trait. Defaults to App\Models.
  • namespace_mode: Defines the search mode for the namespaces. ClassFinder::STANDARD_MODE will only find the exact matching namespace, ClassFinder::RECURSIVE_MODE will find all subnamespaces. Defaults to ClassFinder::STANDARD_MODE.
  • prefix: Defines the route prefix. Defaults to api.

Your config might look like this:

<?php

use HaydenPierce\ClassFinder\ClassFinder;

return [

 /*
 |--------------------------------------------------------------------------
 | Model Namespace Configuration
 |--------------------------------------------------------------------------
 |
 | string or array with one ore multiple namespaces that should be monitored 
 | for the configured trait. Defaults to App\Models.
 |
 */

 'namespace' => 'App\Models',

 /*
 |--------------------------------------------------------------------------
 | Model Namespace Search Option
 |--------------------------------------------------------------------------
 |
 | Defines the search mode for the namespaces. ClassFinder::STANDARD_MODE
 | will only find the exact matching namespace, ClassFinder::RECURSIVE_MODE
 | will find all subnamespaces. Defaults to ClassFinder::STANDARD_MODE.
 | 
 | Beware: ClassFinder::RECURSIVE_MODE might cause some testing issues.
 |
 */

 'namespace_mode' => ClassFinder::STANDARD_MODE,

 /*
 |--------------------------------------------------------------------------
 | Route Prefix
 |--------------------------------------------------------------------------
 |
 | Defines the route prefix. Defaults to 'api'.
 |
 */

 'prefix' => 'api',
];

Compatibility

Tested with Laravel 10.x.

License

See License File. Copyright © 2023 Jan Bladt.