- Can I use this Symfony bundle directly in a Laravel project without refactoring?
- No, this bundle is tightly coupled to Symfony’s ecosystem (Doctrine, DI container). You’d need to create a Laravel facade or wrapper service to abstract Symfony-specific logic, like dependency injection and Doctrine calls, while exposing Exact Online API methods via Guzzle or Eloquent.
- What Laravel versions and PHP versions does this bundle support?
- This bundle is designed for Symfony 4.4+ and PHP 7.2, with no native Laravel support. Laravel 8/9/10 projects would require manual adaptation, including updating Guzzle 6 to Guzzle 7+ and rewriting Symfony-specific configurations (e.g., YAML to PHP arrays).
- How do I handle OAuth2 token refresh in Laravel if I wrap this bundle?
- The bundle includes OAuth2 token refresh logic, but you’ll need to integrate it into Laravel’s session/cache system. Store tokens securely (e.g., Laravel’s cache or encrypted database) and trigger `refreshToken()` via a Laravel service or facade when tokens expire, handling redirects manually.
- Does this bundle support Exact Online’s newer API endpoints (e.g., /api/v2) or only /api/v1?
- The bundle hardcodes `/api/v1` endpoints, which may break if Exact Online updates its API structure. You’d need to fork the bundle or override its HTTP client (e.g., Guzzle) to use `/api/v2` or custom endpoints, then test thoroughly against Exact Online’s API documentation.
- How can I implement multi-country support in Laravel using this bundle?
- The bundle supports Belgium, France, Netherlands, and Spain via country-specific configs. In Laravel, replicate the YAML config structure in `config/exact_online.php`, then use a service to dynamically switch contexts (e.g., `ExactManager::setCountry('France')`). Ensure your Laravel routes handle country-specific redirects.
- Are there performance concerns with synchronous API calls in Laravel?
- Yes, synchronous calls can block Laravel’s request lifecycle. For high-throughput systems, offload Exact Online API calls to Laravel queues (e.g., Horizon) or use async HTTP clients like ReactPHP. Wrap the bundle’s methods in a Laravel job to decouple API calls from the web request.
- What alternatives exist for Laravel if this bundle isn’t compatible?
- Consider these Laravel-native alternatives: 1) **ExactOnlinePHP/SDK** (official PHP SDK, framework-agnostic), 2) **spatie/laravel-api-wrapper** (for custom API integrations), or 3) **build a custom service** using Guzzle + Laravel’s HTTP client. These avoid Symfony dependencies entirely.
- How do I test this bundle in Laravel before production use?
- Since the bundle lacks tests, manually validate core workflows: OAuth2 auth/refresh, CRUD operations (e.g., `findBy`, `persist`), and pagination. Mock Exact Online’s API responses (e.g., with Laravel’s HTTP tests) and verify error handling (e.g., 429 rate limits). Test multi-country configs separately.
- Will this bundle work with Laravel’s Eloquent ORM for data persistence?
- No, the bundle uses Doctrine ORM. To sync Exact Online data with Eloquent, create a Laravel service that maps Exact Online entities to Eloquent models manually. Use Laravel’s `Model::create()`/`update()` after fetching data via the bundle’s Guzzle layer or a custom API client.
- Is this bundle actively maintained? What risks does that pose for Laravel projects?
- The bundle hasn’t been updated since 2021, raising risks like compatibility with newer Exact Online API versions or Symfony 6+. Laravel projects face additional risks: outdated Guzzle 6 (security vulnerabilities), no Symfony 5/6+ support, and untested edge cases. Forking or wrapping it requires proactive maintenance.