Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Reusable Bundle Laravel Package

dualhand/reusable-bundle

View on GitHub
Deep Wiki
Context7

Getting Started

Minimal Setup

  1. Installation Add the package via Composer:

    composer require dualhand/reusable-bundle
    

    Register the bundle in config/app.php under providers:

    DualHand\ReusableBundle\ReusableBundle::class,
    
  2. Publish Assets (if applicable) Run:

    php artisan vendor:publish --provider="DualHand\ReusableBundle\ReusableBundle" --tag=config
    

    This generates a config file at config/reusable-bundle.php.

  3. First Use Case Use the bundle’s core functionality (e.g., a reusable service or trait) in a controller or service:

    use DualHand\ReusableBundle\Services\ReusableService;
    
    class ExampleController extends Controller
    {
        public function index(ReusableService $reusableService)
        {
            $result = $reusableService->doSomething();
            return response()->json($result);
        }
    }
    

Implementation Patterns

Core Workflows

  1. Service Integration Bind the bundle’s services in AppServiceProvider for dependency injection:

    public function register()
    {
        $this->app->bind(
            DualHand\ReusableBundle\Contracts\ReusableContract::class,
            DualHand\ReusableBundle\Services\ReusableService::class
        );
    }
    
  2. Configuration-Driven Logic Use the published config (config/reusable-bundle.php) to customize behavior:

    // Example: Override default settings
    'default_setting' => env('REUSABLE_SETTING', 'fallback_value'),
    
  3. Event Listeners Subscribe to bundle events (if provided) in EventServiceProvider:

    protected $listen = [
        'DualHand\ReusableBundle\Events\ReusableEvent' => [
            'App\Listeners\HandleReusableEvent',
        ],
    ];
    
  4. Middleware (if applicable) Apply bundle-specific middleware to routes:

    Route::middleware(['reusable.middleware'])->group(function () {
        // Routes requiring the middleware
    });
    
  5. Traits for Reusability Extend bundle traits in your models/services:

    use DualHand\ReusableBundle\Traits\ReusableTrait;
    
    class MyModel extends Model
    {
        use ReusableTrait;
    }
    

Gotchas and Tips

Common Pitfalls

  1. Namespace Conflicts Ensure the bundle’s namespaces (DualHand\ReusableBundle\*) don’t clash with your project. Use fully qualified namespaces where needed.

  2. Missing Config Publishing If the bundle requires configuration but you skipped vendor:publish, default values may not behave as expected. Always publish config after installation.

  3. Service Provider Order The ReusableBundle provider must be loaded after Laravel’s core providers (e.g., AppServiceProvider). Check config/app.php for correct ordering.

  4. Undefined Methods/Classes The package is labeled as a "demo bundle," so some features may be incomplete or undocumented. Verify available classes/methods in the source:

    // Example: Check if a class/method exists before use
    if (class_exists(DualHand\ReusableBundle\Services\ReusableService::class)) {
        // Safe to use
    }
    

Debugging Tips

  1. Enable Debug Mode Set APP_DEBUG=true in .env to surface bundle-related errors or warnings.

  2. Log Bundle Output Use Laravel’s logging to trace bundle behavior:

    \Log::debug('ReusableBundle output:', ['data' => $reusableService->getData()]);
    
  3. Check for Deprecated Features Since the bundle is a demo, some APIs may change. Review the README or source for deprecation notices.

Extension Points

  1. Customizing Services Override bundle services by binding interfaces to your implementations in AppServiceProvider:

    $this->app->bind(
        DualHand\ReusableBundle\Contracts\ReusableContract::class,
        App\Services\CustomReusableService::class
    );
    
  2. Adding New Features Extend bundle classes (e.g., traits or services) in your project:

    namespace App\Extensions;
    
    use DualHand\ReusableBundle\Traits\ReusableTrait;
    
    trait ExtendedReusableTrait
    {
        public function extraMethod()
        {
            // Add custom logic
        }
    }
    
  3. Testing the Bundle Mock bundle dependencies in tests:

    $this->app->instance(
        DualHand\ReusableBundle\Contracts\ReusableContract::class,
        Mockery::mock(DualHand\ReusableBundle\Contracts\ReusableContract::class)
    );
    
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
emuniq/filament-browser-notifications
syriable/filament-translator
hungnm28/livewire-form
wenprise/eloquent
crudly/encrypted
fadion/bouncy
cuci/prototurk-sdk
gos/pubsub-router-bundle
cuci/prototurk-sdk-symfony
clementtalleu/easyadmin-markdown-bundle
codeflextech/permission-manager
karnoweb/livewire-datepicker
sayedenam/sayed-dashboard
milito/query-filter
apiboxsym/user-bundle
apiboxsym/health-check-bundle
jayeshmepani/jpl-moshier-ephemeris-php
elnasnato/laraliveui
labrodev/rest-sdk
sampaui/sampaui