Dumbo.PHP (Dumbo v0.2.0)

Copy Markdown View Source

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 classElixir term
stdClassMap
DateTime, DateTimeImmutableDateTime
ArrayObject, ArrayIteratorMap
SplFixedArray, SplDoublyLinkedList, SplStack, SplQueueList

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 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.

Functions

known_classes()

@spec known_classes() :: [binary()]

Returns the PHP class names that have a built-in resolver.

resolve_array_object(properties)

@spec resolve_array_object(properties :: map()) :: map()

Resolves an ArrayObject or ArrayIterator to its private storage map.

resolve_datetime(properties)

@spec resolve_datetime(properties :: map()) :: DateTime.t()

Resolves a DateTime or DateTimeImmutable object to a DateTime.

resolve_spl_fixed_array(properties)

@spec resolve_spl_fixed_array(properties :: map()) :: list()

Resolves a SplFixedArray to a list.

resolve_spl_list(properties)

@spec resolve_spl_list(properties :: map()) :: list()

Resolves an SplDoublyLinkedList, SplStack or SplQueue to a list.

resolve_std_class(properties)

@spec resolve_std_class(properties :: map()) :: map()

Resolves a stdClass object to its properties map.

resolvers()

@spec resolvers() :: %{required(class :: binary()) => (properties :: map() -> term())}

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"
]