asaydev/laratickets
asaydev/laratickets is a Laravel package for adding a simple ticketing or helpdesk layer to your application, making it easier to manage support requests, ticket conversations, and basic ticket workflows for developers who want ticket functionality without building it from scratch.
This release is a compatibility/maintenance cut, not a feature release. The two changes that matter day-to-day: PHP 7.4 is now the floor, and the package was adjusted for the Laravel 11+ application skeleton (no app/Http/Kernel.php, no default config/ directory, providers registered in bootstrap/providers.php).
Minimal steps:
php -v # must be >= 7.4
composer require <vendor>/<package>:^1.0
php artisan vendor:publish --provider="<Vendor>\<Package>\<Package>ServiceProvider"
php artisan optimize:clear
Where to look first, in this order:
composer.json of the package — the require block tells you the real support matrix (illuminate/support constraints), and extra.laravel.providers tells you whether discovery is wired up.src/*ServiceProvider.php — mergeConfigFrom(), publishes(), and any container bindings are the actual public API surface.CHANGELOG.md / README — check for a config key rename or a moved namespace between 1.0.x patches.First use case: publish config, set the minimum viable values in .env, then hit the package's primary entry point (facade, helper, or injected contract) from php artisan tinker before wiring it into a controller. That isolates "package works" from "my integration works".
On Laravel 11/12 you generally do not need to touch config/app.php. If discovery fails, register manually in bootstrap/providers.php. On Laravel 8/9/10, add to the providers array in config/app.php only if extra.laravel.providers is absent.
Resolve from the container, never new. Anything the provider binds should be pulled via constructor injection or app(). This is also what makes the package swappable in tests.
Config-first, publish-last. Laravel 11 ships without a config/ directory, so a package that relies on mergeConfigFrom() works out of the box; one that doesn't will return null from config('package.key') until you publish. Prefer overriding only the keys you actually change and letting defaults ride.
Thin adapter around the package. Wrap the package behind your own interface (App\Support\XClient bound to the package class). When 1.0.6 changes a method signature you patch one file, not forty call sites.
Version-matrix CI. Given the PHP 7.4 floor plus Laravel 11 structure support, test at least: PHP 7.4 + Laravel 8, PHP 8.2 + Laravel 10, PHP 8.3 + Laravel 11/12. composer why-not <vendor>/<package> 1.0.5 is the fastest way to explain a resolution failure.
Upgrade recipe for existing installs:
composer update <vendor>/<package> --with-dependencies
php artisan package:discover --ansi
php artisan vendor:publish --provider="..." --force # only if config keys changed
php artisan config:cache && php artisan route:cache
Middleware and routes. If the package ships middleware or route files, remember Laravel 11 moved registration into bootstrap/app.php (->withMiddleware(), ->withRouting()). The 1.0.5 "new structure" change likely covers exactly this — verify by diffing the provider, not by trusting the changelog line.
function f(Type $x = null)) inside the package — they surface as notices, not fatals.config:cache bites. Publish → edit → forget to re-cache is the most common "my change did nothing". Conversely, editing config/ while a cached config exists silently does nothing. Always php artisan config:clear when debugging, config:cache when deploying.vendor:publish without --tag publishes everything the package offers and can overwrite your tuned config. List tags first: php artisan vendor:publish --provider="..." --tag=<tag>.composer require in a container or CI image, run php artisan package:discover --ansi; a stale bootstrap/cache/packages.php makes the provider look unregistered.composer dump-autoload.config() from a deferred provider's register() and expect published values.vendor/. Extension points, in order of preference: config, container binding override in AppServiceProvider::register(), published stubs/views, events the package dispatches. Only fork if none apply.php artisan about (Laravel 9+), composer show -a <vendor>/<package>, php artisan tinker to poke the resolved instance, and Log::debug() inside a wrapper rather than in vendor code.src/ between 1.0.4 and 1.0.5 and check git log -p for the provider before assuming your registration pattern still applies.How can I help you explore Laravel packages today?