sarfraznawaz2005/larafeed
Larafeed is a simple Laravel package for generating RSS and Atom feeds from application data. Define feed items, customize channel metadata and views, and serve valid feeds with minimal configuration.
composer require vendor/package:^3.0. Version 3.0.0 is the first line that declares Laravel 9/10 support — if you are still on Laravel 8, stay pinned to the 2.x line. When resolution stalls, read the solver error literally and run composer why-not vendor/package 3.0.0; the usual culprits are a PHP platform constraint (php -v, need 8.0+ for Laravel 9 and 8.1+ for Laravel 10) or another dependency pinning illuminate/*.config/app.php. If you have disabled discovery or you are registering the package from inside another package, add the provider manually and confirm it with bootstrap/cache/packages.php.php artisan vendor:publish --provider="Vendor\Package\PackageServiceProvider" --tag=config. The config keys map closely onto the constructor arguments of the underlying client, so the config file is effectively the package's public API surface. Read it before reading the source.php artisan tinker → app('package.manager') or the facade root), or use php artisan about on Laravel 9+. If that throws, the problem is a binding or config issue, not your calling code.new. Type-hint the package's contract or facade in controllers, jobs, and commands. This is what makes $this->mock(...) / $this->instance(...) work in tests, and the only way the package's config and customized HTTP client actually apply.config/package.php sourced from .env. Never hardcode them at call sites; the package reads config at construction time and will not see values you set later on an already-resolved singleton.App\Services\... wrapper gives you one place for retries, logging, and DTO mapping, and it means a future major version bump touches one file instead of twenty call sites.$tries, $backoff, and a failed() handler. Distinguish retryable transport errors from permanent auth/validation errors using the package's exception classes rather than string-matching messages.config()->set() before first resolution, or use the package's own connection manager. Mutating config after a singleton is resolved has no effect — this is the most common multi-tenant bug with packages of this shape.Http::fake() and Bus::fake(), and enable Http::preventStrayRequests() so an unmocked call fails loudly instead of hitting the network in CI. Bind a fake implementation through the container in setUp(); prefer that over hitting a sandbox.CHANGELOG.md and the published config against your copy.php artisan vendor:publish --force on a throwaway branch and git diff the config file. Any keys added in 3.0.0 default to whatever the package chose, which may not match your 2.x runtime behavior even though nothing "broke."php artisan optimize:clear (config, routes, views), then check opcache. A stale bootstrap/cache/config.php is the single most common local-vs-CI discrepancy.bootstrap/cache/packages.php to see what Laravel actually registered.vendor/ and avoid extending anything marked @internal — both are exactly where the next major version will break you.How can I help you explore Laravel packages today?