xrow/salesforce-bundle
Symfony bundle from xrow that simplifies Salesforce integration for PHP apps, providing API access, authentication, and tools to exchange and sync CRM data between your application and Salesforce. Connect services, query objects, and keep business data consistent without low-level Salesforce plumbin...
Reality check before you composer require anything: this is a Symfony 2 bundle, not a Laravel package. There is no service provider, no config publish tag, and no php artisan integration. It was last released in May 2015, has zero stars, zero dependents, and no signs of maintenance. Treat it as reference material for how someone once wired Salesforce into a legacy Symfony app, not as something you'll actually drop into a modern Laravel project.
If you genuinely need to evaluate it (e.g. you inherited a Symfony 2 app that already uses it):
composer require xrow/salesforce-bundle — expect version conflicts against anything modern (PHP 8, Symfony 5+, Laravel 9+). You'll likely need an isolated Symfony 2 app or Docker image to even install it.app/AppKernel.php (the old registerBundles() array, not config/bundles.php).app/config/config.yml — open the bundle's DependencyInjection/Configuration.php first to see exactly which keys it expects (endpoint, username, password, security token, and probably a WSDL path).Resources/config/services.yml will name it. That's your single entry point for all API calls.For a Laravel project, the pragmatic move is to skip this entirely. The bundle is thin — the real work is in whatever SOAP client it wraps (likely phpforce/soap-client). You will save time by installing that client directly, or better, using omniphx/forrest (REST, Laravel-native, actively maintained) or the official Salesforce REST client.
Assuming you're on a Symfony 2.x codebase that can actually run this:
SalesforceService/repository → bundle client → SFDC. Never call the bundle client straight from a controller; you want one seam you can swap when (not if) you migrate off the bundle.query() with SOQL, create(), update(), upsert() (external-ID based, ideal for idempotent syncs from your Laravel app), describeSObject() for field metadata.BatchSize or push to the Salesforce Bulk API separately (this bundle almost certainly doesn't wrap it).describe results aggressively. Schema calls are slow and rarely change; cache them in your app's cache layer (Redis, filesystem) with a long TTL and a manual flush hook.config.yml. Even in a Symfony 2 app, use %env(...)% or a parameters file that isn't committed.For a Laravel app that wants the same capability:
SalesforceClient interface in a SalesforceServiceProvider.omniphx/forrest for REST/SOQL, or phpforce/soap-client directly if you specifically need SOAP (legacy Enterprise/Unlimited orgs sometimes force it).composer require and use it. Your realistic options are (a) a Symfony 2 sidecar/service, (b) extract the client logic by reading the bundle and porting it, or (c) use a maintained alternative.INVALID_FIELD, UNKNOWN_EXCEPTION, or cryptic MALFORMED_QUERY. Enable __getLastRequest() / __getLastResponse() dumps on the underlying SOAP client (guard behind a dev flag) — without the full envelope you will guess for hours.omniphx/forrest for Laravel REST, the official salesforce/rest-api client for a vendor-neutral option, and reserve SOAP clients for orgs that genuinely require them. Keep this bundle only if you're maintaining an existing Symfony 2 install and have no upgrade path.How can I help you explore Laravel packages today?