localfr/salesforce-client-bundle
Symfony bundle that wires a Salesforce API client into your PHP application, providing ready-made service definitions and configuration so you can authenticate and query Salesforce from your own code with minimal setup.
Architecture fit — mismatch at the framework layer. Despite being evaluated as a Laravel/PHP package, localfr/salesforce-client-bundle is a Symfony bundle, not a Laravel package. It almost certainly extends Symfony\Component\HttpKernel\Bundle\Bundle and expects registration in config/bundles.php. Laravel has no bundle registry, no Kernel::registerBundles(), and no autoconfiguration hook for Bundle subclasses. Installing it into a Laravel app will pull Symfony's DI, config, and http-kernel components into the dependency graph without any code path that actually boots the bundle. Composer package discovery will not find a Laravel\ServiceProvider, so nothing is wired.
Integration feasibility — low via the bundle, moderate via its dependency. The pragmatic surface is the underlying client library it wraps (the localfr org publishes a PHP Salesforce API client independently). That library is framework-agnostic and can be bound as a singleton in a Laravel service provider with config in config/services.php. The bundle itself contributes: DI service definitions, a config tree (salesforce: base_uri, client_id, client_secret, username, password, ...), and possibly a console command. None of that transfers; the config schema is the only artifact worth reading before re-implementing it in Laravel style.
Technical risk — high, and concentrated in the adoption signal.
SECURITY.md and advisory history is a real governance gap.Key questions for the vendor or a spike:
Stack fit. Treat the bundle as documentation, not a dependency. Add only the framework-agnostic client package to composer.json. Bind it in a dedicated SalesforceServiceProvider as a singleton, expose it behind a Salesforce facade, and map credentials from config/services.php to environment variables with config:cache compatibility in mind (no env() calls outside config files).
Migration path. If this is being lifted from an existing Symfony service, the work is mechanical: translate the bundle's YAML service definitions to a provider binding, translate the config tree to a config/salesforce.php file, and drop any Symfony console commands in favour of Artisan commands. Budget a few days, not weeks.
Compatibility. Pin explicitly and verify in a throwaway branch before committing:
php constraint against our Laravel floor.composer why-not on Symfony component versions to detect conflicts before install, not after.Sequencing.
Maintenance. Assume we own the code. With zero dependents there is no upgrade path being exercised by anyone else, so upstream regressions reach us first. Plan to fork the client into a private VCS repository or vendor it, and assign a named owner. Review quarterly for Salesforce API version deprecations — Salesforce retires REST API versions on a rolling ~3-year cadence, and a small package is unlikely to track that proactively.
Support. No commercial support, no community forum, no issue-triage track record. Internal documentation will have to be written from scratch. The Salesforce-side knowledge (Connected App setup, IP allowlisting, profile permissions, field-level security) is the larger support burden, not the PHP code.
Scaling. The binding constraint is Salesforce, not PHP. Every org is subject to a 24-hour rolling API request allocation (roughly 15,000 + per-user allowances on Enterprise), concurrent long-running request limits, and Bulk API batch sizing. A synchronous client will saturate these under load and, worse, fail inside user requests. Mandatory design points: queue all writes, cache reads, batch bulk operations, and instrument API call counts per day as a first-class metric with alerting at 80% of allocation.
Failure modes to design for explicitly:
REQUEST_LIMIT_EXCEEDED — treat as a throttle signal, back off, and surface to ops; never retry in a tight loop.Ramp-up. Two distinct skill sets are needed and should be planned separately: Laravel engineers for the provider/queue/observability work (days), and someone with Salesforce org familiarity for Connected App provisioning, sandbox strategy, object model, and SOQL (weeks if not already on the team). If no one on staff has Salesforce experience, add that as a hiring or contractor line item before committing to a timeline — it is the dominant schedule risk, well ahead of anything in this package.
How can I help you explore Laravel packages today?