Install the package via Composer with:
composer require vendor/package-name
Ensure your Laravel project is version 6.X, 7.X, 8.X, or 9.X (previously limited to 5.X). Publish the config file if needed:
php artisan vendor:publish --provider="Vendor\PackageName\PackageServiceProvider"
Verify compatibility by checking config/package-name.php for version-specific configurations.
First use case: Integrate the package into a controller or service by injecting its facade or binding:
use Vendor\PackageName\Facades\PackageFacade;
class ExampleController extends Controller
{
public function example()
{
return PackageFacade::doSomething();
}
}
AppServiceProvider for reusable logic:
$this->app->bind('package.core', function ($app) {
return new \Vendor\PackageName\CoreService($app['config']['package-name']);
});
config/package-name.php):
'api_endpoint' => env('CUSTOM_API_URL', 'default.url'),
EventServiceProvider:
protected $listen = [
'Vendor\PackageName\Events\PackageEvent' => [
'App\Listeners\HandlePackageEvent',
],
];
Route::middleware(['package.auth'])->group(function () {
// Protected routes
});
PackageServiceProvider for custom boot logic:
public function boot()
{
parent::boot();
// Add custom logic here
}
guzzlehttp/guzzle, monolog/monolog) are compatible with your Laravel version. Run:
composer why-not vendor/package-name
Package::oldMethod()) with new ones (e.g., PackageFacade::newMethod()).php artisan config:clear
config/package-name.php:
'debug' => env('APP_DEBUG', false),
dd(app()->has('package.core')); // Should return true
AppServiceProvider:
$this->app->singleton('package.core', function () {
return new \App\Services\CustomPackageService();
});
AppServiceProvider:
Blade::directive('packageDirective', function ($expression) {
return "<?php echo customPackageLogic($expression); ?>";
});
HttpClient class.APP_ENV is set to local for testing:
QUEUE_CONNECTION=sync php artisan package:process
RefreshDatabase trait for package-related tests:
use RefreshDatabase;
class PackageTest extends TestCase
{
use RefreshDatabase;
// ...
}
How can I help you explore Laravel packages today?