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

Laravel Setting Pro Laravel Package

sajadsdi/laravel-setting-pro

View on GitHub
Deep Wiki
Context7

Getting Started

Install via Composer:

composer require vendor/package-name

Ensure your project uses Laravel 11 (this package now requires it). Register the package service provider in config/app.php under providers:

Vendor\PackageName\PackageServiceProvider::class,

Publish the config file (if applicable) with:

php artisan vendor:publish --provider="Vendor\PackageName\PackageServiceProvider"

Verify compatibility by checking composer.json for Laravel 11 constraints.

First use case: Use the package’s core functionality (e.g., PackageName::feature()) in a controller or command:

use Vendor\PackageName\Facades\PackageName;

public function example()
{
    return PackageName::feature('input');
}

Implementation Patterns

Core Workflows

  1. Service Integration: Bind the package’s services in AppServiceProvider:
    public function register()
    {
        $this->app->bind('custom.service', function () {
            return new Vendor\PackageName\Services\CustomService();
        });
    }
    
  2. Middleware/Events: Use the package’s events (e.g., Vendor\PackageName\Events\FeatureTriggered) in EventServiceProvider:
    protected $listen = [
        'Vendor\PackageName\Events\FeatureTriggered' => [
            'App\Listeners\HandleFeatureTrigger',
        ],
    ];
    
  3. Artisan Commands: Extend or use built-in commands (e.g., php artisan package:generate):
    php artisan make:command CustomPackageCommand --package="vendor/package-name"
    

Configuration

Override defaults in config/package-name.php (published via vendor:publish):

'feature' => [
    'timeout' => 30, // Customize as needed
],

Gotchas and Tips

Breaking Changes (Laravel 11)

  • No config/app.php auto-discovery: Explicitly add the service provider (Laravel 11 removed auto-loading for some packages).
  • Dependency updates: Ensure composer.json reflects Laravel 11’s PHP 8.2+ requirements.
    "require": {
        "php": "^8.2",
        "laravel/framework": "^11.0"
    }
    
  • Facade changes: If the package uses facades, verify they’re compatible with Laravel 11’s container (e.g., Facade\Ignition may affect error handling).

Debugging

  • Dependency conflicts: Run composer why-not vendor/package-name to diagnose version mismatches.
  • Logging: Enable debug mode in config/package-name.php:
    'debug' => env('APP_DEBUG', false),
    
  • Testing: Use Laravel’s Fresh tests to isolate package behavior:
    public function test_package_feature()
    {
        $response = $this->actingAs(User::factory()->create())
                         ->post('/endpoint', ['data' => 'test']);
        $response->assertStatus(200);
    }
    

Extension Points

  • Custom Providers: Extend functionality by creating a custom provider:
    class CustomPackageProvider extends ServiceProvider
    {
        public function register()
        {
            $this->app->extend('package.feature', function ($service) {
                return new CustomFeature($service);
            });
        }
    }
    
  • Blade Directives: Add package-specific directives in AppServiceProvider:
    Blade::directive('packageFeature', function ($expression) {
        return "<?php echo Vendor\PackageName\Facades\PackageName::feature($expression); ?>";
    });
    
  • API Resources: Transform package data with custom resources:
    namespace App\Http\Resources;
    use Vendor\PackageName\Models\FeatureModel;
    
    class FeatureResource extends JsonResource
    {
        public function toArray($request)
        {
            return [
                'id' => $this->id,
                'custom_field' => $this->customField(),
            ];
        }
    }
    

Performance

  • Caching: Cache frequent package operations (e.g., Cache::remember):
    $data = Cache::remember('package.key', 60, function () {
        return PackageName::expensiveFeature();
    });
    
  • Queue Jobs: Offload heavy tasks to queues:
    dispatch(new Vendor\PackageName\Jobs\ProcessFeature($data));
    
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.
monarobase/country-list
nasirkhan/laravel-sharekit
directorytree/privacy-filter-classifier
directorytree/privacy-filter
datacore/hub-sdk
develia/commons
cuci/prototurk-sdk
cuci/prototurk-sdk-symfony
develia/geo-bundle
dreamzy/livewire-charts
touchestate-sdk/php-sdk
22h/doctrine-garbage-collection-bundle
agtp/agtp-php
agtp/mod-php
splash/sonata-admin
splash/metadata
splash/openapi
splash/scopes
splash/toolkit
testo/output-teamcity