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
Php Consul Api

Php Consul Api Laravel Package

dcarbone/php-consul-api

PHP client for the Consul HTTP API. Built for Composer and modeled after HashiCorp’s Go client, with version compatibility guidance and flexible configuration (defaults from Consul env vars or custom config with Guzzle, address, scheme, datacenter, auth, tokens).

View on GitHub
Deep Wiki
Context7

PHP client implementation for the Consul API

Frequently asked questions about Php Consul Api
How do I integrate this Consul client into a Laravel application for service discovery?
Use Laravel’s Service Provider to bind the Consul client to the container. Inject it into your classes via constructor injection or resolve it with `$this->app->make(ConsulClient::class)`. For example, register a service like `database.service.consul` in Consul and resolve it dynamically in your Laravel config or service classes.
Does this package support Laravel 10+ and PHP 8.0+?
The package targets PHP 8.0+ and is compatible with Laravel 8, 9, and 10. Check the `composer.json` constraints for exact version requirements, as newer Laravel releases may need adjustments for dependency conflicts.
Can I use this package to replace Laravel’s `.env` for dynamic configurations?
Yes, you can store non-sensitive configurations like feature flags or API endpoints in Consul KV and fetch them dynamically using the package. Combine this with Laravel’s `config()` helper to override default values or use it in your Service Providers to load configs at runtime.
How do I handle authentication with Consul ACL tokens in Laravel?
Pass your ACL token via the `Config` class constructor or set it as an environment variable. For example, `$config = new Config(['Token' => env('CONSUL_TOKEN')])`. Ensure your Laravel `.env` file includes the token securely, and restrict access to sensitive configurations.
What’s the best way to cache Consul API responses in Laravel?
Use Laravel’s cache drivers (e.g., Redis) to cache responses from Consul KV or Catalog queries. For example, wrap your Consul calls in `Cache::remember()` to reduce API calls. This is especially useful for read-heavy operations like service discovery or config lookups.
How do I handle Consul API failures or network timeouts in production?
Implement retry logic using Laravel’s `retry()` helper or exponential backoff for transient failures. For critical operations, consider falling back to static configurations stored in `.env` if Consul is unavailable. Monitor Consul health checks and trigger alerts via Laravel’s event system.
Can I use this package with Docker or Kubernetes for service registration?
Absolutely. Register your Laravel services in Consul using the `Agent` API during container startup (e.g., via Docker `entrypoint` scripts or Kubernetes `initContainers`). Use the package to dynamically resolve service endpoints, enabling seamless load balancing and failover across containers.
How do I test Laravel applications using this Consul client in PHPUnit?
Mock Consul responses using tools like VCR for PHP or set up a local Consul Docker instance for integration tests. For unit tests, use PHPUnit’s mocking capabilities to simulate Consul API calls. Ensure your test environment matches your production Consul setup for accurate results.
What are the alternatives to this package for Laravel-Consul integration?
Alternatives include `spatie/laravel-consul`, which is Laravel-specific but less actively maintained. This package offers lower-level control and direct Consul API access, making it ideal for custom integrations. If you need a simpler, high-level solution, evaluate `spatie/laravel-consul` but be aware of its maintenance status.
How do I migrate from hardcoded service URLs to Consul-based discovery in Laravel?
Start by replacing hardcoded URLs (e.g., `DB_HOST`) with Consul-resolved values in your Laravel config files. Use the package to fetch service endpoints dynamically, such as `config(['database.connections.mysql.host' => $consul->kv->get('database/service/host')])`. Gradually phase out static configs as you adopt Consul for service discovery.
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.
codifyo/ts-generator-bundle
andydefer/laravel-cluster
testo/fiber
mintobit/jobqueue
a4sex/maintenance-bundle
a4sex/entity-date-update
a4sex/client-identifier
a4sex/base-utilites
a4sex/key-value-storage
a4sex/micro-status
chilldev/dependency-injection-extra
datinglibre/datinglibre-app-api
biberltd/corebundle
bricre/symfony-bundle-test
biberltd/logbundle
dominium/http-adapter-bundle
dominium/google-analytics
a4sex/auto-clean-entity
christhompsontldr/laravel-inky
spatie/mailcoach-vapor