mohammedeisa/rating-bundle
A Laravel bundle that provides a starting point for adding rating functionality to your application, letting users rate Eloquent models and store those ratings alongside your existing data.
composer require vendor/package:^2.0. Because 2.0 is the first tagged release, treat the version constraint as provisional — pin to 2.0.* in composer.json until you have a green CI run, then relax it.php artisan about (or php artisan package:discover) and check that the provider appears. If the package predates discovery conventions, add it manually to config/app.php under providers and aliases.php artisan vendor:publish --provider="Vendor\Package\PackageServiceProvider" (add --tag=config, --tag=migrations once you know the tags). Commit the published config file so environment differences are explicit rather than implicit.README.md → CHANGELOG.md → src/*ServiceProvider.php (this tells you what is bound, what is tagged, and which config keys are actually read) → config/*.php → tests/ in the package repo. The service provider is the most reliable documentation of behaviour; the README is the most reliable documentation of intent.app(PackageManager::class) in php artisan tinker, or a GET route that renders one package-provided value. Prove the wiring (config resolution, container binding, credentials) before wiring it into a write path, a queue job, or a model event.app/Services adapter and resolve that. Package APIs churn faster than your domain; a single seam means a composer update becomes a diff in one class instead of a grep across the codebase.Facade::clearResolvedInstances() gymnastics.config/services.php (or a dedicated config/<package>.php) reading from env(), and never call env() outside config files — config:cache will silently return null otherwise.assert* helper, use it in feature tests and keep one or two integration tests that hit the real implementation — otherwise you are testing the fake.app()->scoped(...)) rather than a singleton, and verify the package does not cache a connection or client internally across requests (relevant under Octane).composer install --no-dev --optimize-autoloader, php artisan config:cache, route:cache, view:cache, event:cache. Any of these can expose an eager env() call or a closure-based route registration in a package that worked fine in local dev.2.0 as a first release is a semver statement, not a stability guarantee. There is no 1.x migration path to learn from, so undocumented breaking changes between 2.0.x patches are plausible. Read the diff of each patch release, or at minimum the CHANGELOG, before bumping.composer dump-autoload (and on Octane, a worker restart) is missing. php artisan package:discover alone does not refresh the classmap.config:cache, newly added package config keys are absent until you re-cache. Symptom: null where the package expects an array. Fix: php artisan optimize:clear.migrate, and consider copying them into database/migrations with adjusted timestamps.Cache, Client, Manager) registered by the package can shadow or be shadowed by an existing alias. Register your own explicit alias rather than relying on the package default.php artisan about for provider presence, 2) php artisan tinker to resolve the binding and inspect the config array, 3) Log::debug() around the call with config('package') dumped, 4) php artisan vendor:publish --force into a scratch branch to compare defaults against your file. Nine times out of ten it is a config key or a cached config.$this->app->tag([...], 'name')), any Manager-style driver resolver (so you can register a custom driver via extend()), published interfaces intended for binding, and dispatched events you can listen to instead of subclassing internals. Subclassing package classes is the extension point of last resort — it breaks silently on minor releases.How can I help you explore Laravel packages today?