developerforce/force.com-toolkit-for-php
A PHP toolkit for integrating with Salesforce, providing wrappers for the REST, SOAP, Bulk, Metadata, and Streaming APIs plus OAuth authentication. It simplifies building Force.com/Salesforce apps and syncing data from PHP.
Architecture fit. This is not a Laravel package. developerforce/force.com-toolkit-for-php is a plain PHP SOAP client for Salesforce's Partner and Enterprise WSDLs, published before Laravel auto-discovery and service-provider conventions were standard. It will not register itself in the container, ships no config, no facade, and no Laravel-facing abstractions. Architecturally it fits only as a low-level transport adapter wrapped behind our own gateway interface; it should never be called directly from controllers or jobs.
Integration feasibility. Installable via Composer and technically callable from Laravel today, but it requires ext-soap and ext-openssl, a WSDL source (static Partner WSDL file or per-org Enterprise WSDL), and a manual credential/login flow. The typical pattern is a SOAP login() to obtain a session ID and instance URL, then either continue over SOAP or hand the session to REST callouts. Wrapping it in a service provider, config file, and a small repository layer is a few days of work — not a blocker, but it is bespoke code we own.
Technical risk. High, and mostly non-technical in origin:
NOASSERTION. Legal review is mandatory before shipping to production; the actual terms may be BSD-style but cannot be assumed.Key questions.
describeSObjects), or would OAuth + REST via Laravel's HTTP client cover 100% of our use cases?Bottom line. Viable only as a short-lived bridge or as a fork we explicitly own. For new work, the opportunity score (12.33) and archived status argue against adoption.
Stack fit. Treat it as an implementation detail behind a SalesforceClient interface with methods expressed in our domain terms (upsertAccount, queryContacts), not SOAP verbs. Bind the implementation in a service provider, drive credentials from config/services.php and encrypted env vars, and expose a thin facade only if multiple call sites need it. Cache the session ID and instance URL in the cache store with a TTL below Salesforce's session timeout to avoid a SOAP login on every request.
Migration path. Run a two-track spike:
If Track A covers the use cases, do not adopt. If Track B wins on a narrow feature, adopt it behind the interface so it can be swapped without touching call sites.
Compatibility. Verify Composer resolution against our PHP constraint, confirm ext-soap is present in every runtime including queue workers and CI, and check TLS/proxy behavior for outbound calls. Enterprise WSDL files are large and org-specific — they should not be committed per environment; prefer the Partner WSDL or generate at deploy. Static WSDL parsing also has a cold-start cost worth measuring.
Sequencing.
Maintenance. Effectively fork-and-own. Upstream is archived, so every fix is ours: PHP upgrades, dependency drift, Salesforce API changes, TLS/certificate rotations. Budget a standing fraction of an engineer and put the package on the same review cadence as first-party code. Pin the version explicitly and vendor or mirror it if Packagist availability is a concern.
Support. Community-only. No vendor, no SLA, no security advisories. Incident response depends on our own debugging of SOAP faults, which are verbose but poorly documented. Expect slow diagnosis for auth and session issues.
Scaling. Two constraints dominate: Salesforce API call limits (daily and concurrent) and the cost of SOAP login. Session reuse and request batching are mandatory, not optional. Large WSDL parsing per process affects cold starts under autoscaling; warm it or cache the parsed metadata. SOAP payloads are heavier than REST equivalents, which matters for bulk sync jobs.
Failure modes.
Ramp-up. Low to make a first API call, moderate to high to operate safely. The library itself is small; the real learning curve is the Salesforce object model, governor limits, and auth semantics. Plan a one-to-two week spike including sandbox setup, and ensure at least one engineer has Salesforce platform familiarity before this reaches production. Documentation for this package is thin and largely external, so institutional knowledge must be written down rather than assumed.
How can I help you explore Laravel packages today?