hefestoapicontainer

Memory

Memory se usa para poder leer y escribir valores de cualquier tipo en una directiva y tener acceso a ellos desde cualquier otra directiva.

Un par de ejemplos para entenderlo:

Uso desde api.yaml con alias

Las directivas pueden leer de memory a través de alias:

key: poems
endpoints:
    post /user:
        LoadUser:
            directive: LoadAndValidateModel
            source: $.message.bodyAsArray
            target: user
        SaveUser:
            directive: SaveUser
            user: $.memory.user

En el caso anterior, LoadUser escribe internamente en memory, en la key user (un array con los datos de un usuario). Este dato luego se pasa a la directiva SaveUser a través del alias: $.memory.user.

Lectura y escritura en PHP

Puedes escribir a memory usando el estado, desde dentro de una directiva:

$state->memory()->set('day', 'monday');

Y luego leer, desde dentro de otra directiva:

$state->memory()->get('day'); // devolvería 'monday'

O acceder a esa misma variable usando un alias en tu yaml:

key: poems
endpoints:
    post /day:
        CalculateDay:
            directive: CalculateDay
        SaveDay:
            directive: SaveDay
            user: $.memory.day

El método set admite cualquier tipo de dato: string, integer, array, etc.

Variables globales del sistema

Memory también se usa de forma predeterminada para acceder a las siguientes variables globales dentro de Hefesto: