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 Xmlrpc Client

Php Xmlrpc Client Laravel Package

ang3/php-xmlrpc-client

Lightweight PHP XML-RPC client inspired by Ripcord. Create a client with the server URL and call remote methods with optional args. Requires the php-xmlrpc extension. Throws transport and remote exceptions for failed requests or server errors.

View on GitHub
Deep Wiki
Context7

PHP XML-RPC client

Frequently asked questions about Php Xmlrpc Client
How do I integrate this XML-RPC client into a Laravel application?
Register the client as a Laravel service binding using PHP 8.0’s constructor property promotion. For example, bind it in your `AppServiceProvider` with `$this->app->bind(XmlRpcClient::class, fn($app) => new Client($app['config']['xmlrpc.endpoint']));`. Then inject the client into your services via constructor dependency injection.
Does this package support Laravel’s HTTP client middleware or logging?
No, this package doesn’t integrate directly with Laravel’s HTTP client. However, you can combine it with Laravel’s HTTP client for unified logging or middleware by wrapping the client’s transport layer. Alternatively, use Symfony’s HTTP client for retries and timeouts alongside this package.
What Laravel versions and PHP versions are supported?
This package requires PHP 8.0+ and works with Laravel 8.x, 9.x, and 10.x. The latest release (v1.0.3) includes PHP 8.0 compatibility, including named arguments and strict typing, which aligns well with modern Laravel deployments. Ensure your server also supports PHP 8.0+.
How do I handle XML-RPC errors in Laravel exceptions?
The package throws `TransportException` for transport failures and `RemoteException` for server errors. Wrap these in a custom service to translate them into Laravel’s exception hierarchy (e.g., `HttpException` or `RuntimeException`). Example: `catch (RemoteException $e) { throw new HttpException(500, $e->getFaultString()); }`.
Can I mock XML-RPC responses for testing in Laravel?
Yes, use PHPUnit’s mocking capabilities to create a mock `Client` instance or a custom transport layer. For end-to-end testing, consider using a mock XML-RPC server like `php-xmlrpc-server` or a local instance of the legacy system you’re integrating with. Laravel’s HTTP testing tools won’t apply here, so manual mocking is required.
What are the risks of using XML-RPC in a Laravel application?
XML-RPC is outdated and lacks modern features like REST’s statelessness or gRPC’s performance. Risks include poor performance, lack of tooling, and potential security concerns (e.g., no built-in CSRF protection). Use this package only for legacy integrations with a clear migration plan to REST or GraphQL.
How do I handle complex XML-RPC responses (e.g., nested structs, base64 data)?
The package handles basic serialization/deserialization, but complex responses (e.g., nested structs or binary data) may require custom unmarshalling. Use Laravel’s Data Transfer Objects (DTOs) or manually process the response array. For base64 data, decode it in your service layer before returning to Laravel.
Is this package actively maintained? Should I fork it?
The package is no longer actively maintained (last release in 2023). If you need long-term stability, fork the repository and maintain your own version. Alternatively, create a wrapper service to isolate changes and reduce dependency risks. Check for open issues or pull requests before forking.
Can I use this client with Laravel’s queue system for async XML-RPC calls?
Yes, you can dispatch XML-RPC calls as Laravel jobs. Create a job class that uses the client, then dispatch it to a queue. Example: `XmlRpcJob::dispatch($method, $args)->onQueue('xmlrpc');`. Ensure your queue worker handles exceptions gracefully, as XML-RPC failures will throw `RequestException`.
What alternatives exist for XML-RPC in Laravel?
For modern APIs, consider REST (Laravel’s HTTP client), GraphQL (using packages like `webonyx/graphql-php`), or gRPC (via `php-grpc`). If you must use XML-RPC, alternatives include the original `DarkaOnLine/Ripcord` (though less maintained) or Symfony’s `HttpClient` with a custom XML-RPC encoder/decoder.
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.
besmartand-pro/php-quality-config
sentix/ai-chatbot
codifyo/ts-generator-bundle
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