Download the PHP package obuchmann/odoo-jsonrpc without Composer
On this page you can find all versions of the php package obuchmann/odoo-jsonrpc. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package odoo-jsonrpc
Access Odoo via JsonRPC
Connect to odoo via the json-rpc api. If you are in a laravel project, this package registers a provider. But laravel is not required for this package.
Installation
You can install the package via composer:
The service provider will automatically register itself if you are in a laravel project.
You can publish the config file with:
Usage
Basic Usage
Laravel Usage
Fixed User ID for Performance
In scenarios where performance is critical and the Odoo user context is static (e.g., in some Dockerized enterprise deployments or for specific integration users), you can bypass repeated authentication calls by using a fixed User ID.
This is achieved by setting the ODOO_FIXED_USER_ID
environment variable or the fixed_user_id
key in the configuration file (config/odoo.php
in Laravel projects).
How it works:
If fixed_user_id
is set to a valid, positive integer, the library will skip the standard username/password authentication step (the common.authenticate
RPC call to Odoo) and will use this provided User ID for all subsequent operations. This can reduce latency by avoiding an extra network request for authentication on each instantiation or connection attempt.
Configuration:
-
Environment Variable:
- Configuration File (e.g.,
config/odoo.php
for Laravel):
Important Considerations:
- When
fixed_user_id
is used, theusername
andpassword
configurations are ignored for the purpose of obtaining the User ID. - Ensure the provided User ID has the necessary access rights in Odoo for the operations your application will perform.
- This feature is intended for specific use cases. For most applications, especially those with dynamic user contexts, the standard authentication flow is more appropriate.
Laravel Models
Laravel Models are implemented with Attributes
Casts
Field type casting is a powerful feature that allows you to convert data between Odoo's native format (often strings, integers, or simple arrays) and specific PHP types or objects. This makes working with Odoo data in your PHP application more type-safe, convenient, and object-oriented. For instance, Odoo typically stores dates and times as strings (e.g., '2023-12-31 15:45:00'). With casting, these can be automatically converted to PHP \DateTime
or \DateTimeImmutable
objects when you read data, and back to Odoo's string format when you save data.
How Casting Works
Casting is handled by dedicated cast classes. To create a custom cast, you extend the Obuchmann\OdooJsonRpc\Odoo\Casts\Cast
abstract class and implement three key methods:
getType(): string
: This method returns the fully qualified name of the PHP class that this cast is responsible for (e.g.,\DateTime::class
,App\ValueObjects\MyCustomType::class
).cast($raw)
: This method takes the raw value from Odoo and converts it into an instance of the PHP type specified bygetType()
.uncast($value)
: This method takes an instance of your PHP type and converts it back into a format that Odoo expects.
Global Cast Registration
Casts are registered globally using the static Odoo::registerCast()
method.
Once a cast is registered for a specific PHP type (e.g., \DateTime::class
), it will automatically be applied to any OdooModel property that is type-hinted with that PHP type.
Example: Using DateTime Casting
Let's say you have an Odoo model with a create_date
field, and you've registered the DateTimeCast
.
First, define your OdooModel in PHP:
Now, when you interact with this model:
If the create_date
field in Odoo can be false (empty), ensure your PHP property is nullable (?\DateTime
). The DateTimeCast
provided will return null
if the raw value from Odoo is false or an invalid date string. Similarly, if you set the property to null
, it will be uncasted appropriately (typically to false
for Odoo).
Creating Custom Casts
You can write custom casts for any data type by extending the Obuchmann\OdooJsonRpc\Odoo\Casts\Cast
class. Here's the structure of the built-in DateTimeCast
as an example:
This provides a robust way to handle specific data types and ensures that your PHP models work with rich PHP objects, while the library handles the conversion to and from Odoo's expected formats.
bash composer test