Skip to content

Instantly share code, notes, and snippets.

@neitanod
Last active July 6, 2019 06:00
Show Gist options
  • Save neitanod/525e27ed3cabb432ecd90718893f0264 to your computer and use it in GitHub Desktop.
Save neitanod/525e27ed3cabb432ecd90718893f0264 to your computer and use it in GitHub Desktop.
Ejemplo de uso de github.com/neitanod/struct
<?php
require_once('vendor/neitanod/struct/src/Struct/Struct.php');
use \Neitanod\Struct\Struct;
$s = new Struct();
$s ->access('node-1')
->access('node-1.1')
->access('node-1.1.1')
->set('leave-1.1.1.1', 1111)
->set('leave-1.1.1.2', 1112);
$s ->access('node-1')
->access('node-1.1')
->access('node-1.1.2')
->set('leave-1.1.2.1', 1121)
->set('leave-1.1.2.2', 1122);
$s ->access('node-1')
->access('node-1.2')
->access('node-1.2.1')
->set('leave-1.2.1.1', 1211)
->set('leave-1.2.1.2', 1212);
echo $s->toJson();
/*
OUTPUT:
{
"node-1": {
"node-1.1": {
"node-1.1.1": {
"leave-1.1.1.1": 1111,
"leave-1.1.1.2": 1112
},
"node-1.1.2": {
"leave-1.1.2.1": 1121,
"leave-1.1.2.2": 1122
}
},
"node-1.2": {
"node-1.2.1": {
"leave-1.2.1.1": 1211,
"leave-1.2.1.2": 1212
}
}
}
}
*/
// simulemos que cargamos un array en un struct, por ejemplo un archivo de configuración
// (pero por ahora sólo usemos el array obtenido del struct armado arriba)
$config = new Struct( $s->toArray() );
// No más código de chequeo a cada paso de la ruta de keys! :D
echo $config->access('node-1')->access('node-1.2')->access('node-1.2.1')->get('leave-1.2.1.1', "default_value");
/*
OUTPUT:
1211
*/
// Si algún key de la ruta no existe, no importa. Y si el nodo hoja no existe, se usa el default pasado.
echo $config->access('node-1')->access('node-1.4')->access('node-1.4.1')->get('leave-1.4.1.1', "default_value");
/*
OUTPUT:
default_value
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment