Resolvers for common PHP classes that map directly onto native Elixir types.
They are the default :object_resolvers of %Dumbo.DecodeOpts{}, so
Dumbo.decode/2 applies them automatically.
| PHP class | Elixir term |
|---|---|
stdClass | Map |
DateTime, DateTimeImmutable | DateTime |
ArrayObject, ArrayIterator | Map |
SplFixedArray, SplDoublyLinkedList, SplStack, SplQueue | List |
DateTime offsets and UTC aliases always resolve; other time zones need a
configured time zone database and otherwise raise Dumbo.ResolveError.
Examples
iex> Dumbo.PHP.resolve_std_class(%{"name" => "Alice"})
%{"name" => "Alice"}
iex> Dumbo.PHP.resolve_datetime(%{
...> "date" => "2024-01-15 09:30:00.000000",
...> "timezone_type" => 3,
...> "timezone" => "UTC"
...> })
~U[2024-01-15 09:30:00.000000Z]
iex> Dumbo.PHP.resolve_spl_fixed_array(%{0 => 1, 1 => 2, 2 => 3})
[1, 2, 3]
Summary
Functions
Returns the PHP class names that have a built-in resolver.
Resolves an ArrayObject or ArrayIterator to its private storage map.
Resolves a SplFixedArray to a list.
Resolves an SplDoublyLinkedList, SplStack or SplQueue to a list.
Resolves a stdClass object to its properties map.
Returns the default map of PHP class names to resolver functions.
Functions
@spec known_classes() :: [binary()]
Returns the PHP class names that have a built-in resolver.
Resolves an ArrayObject or ArrayIterator to its private storage map.
@spec resolve_datetime(properties :: map()) :: DateTime.t()
Resolves a DateTime or DateTimeImmutable object to a DateTime.
Resolves a SplFixedArray to a list.
Resolves an SplDoublyLinkedList, SplStack or SplQueue to a list.
Resolves a stdClass object to its properties map.
Returns the default map of PHP class names to resolver functions.
iex> Dumbo.PHP.resolvers() |> Map.keys() |> Enum.sort()
[
"ArrayIterator",
"ArrayObject",
"DateTime",
"DateTimeImmutable",
"SplDoublyLinkedList",
"SplFixedArray",
"SplQueue",
"SplStack",
"stdClass"
]