Last active
July 6, 2019 06:00
-
-
Save neitanod/525e27ed3cabb432ecd90718893f0264 to your computer and use it in GitHub Desktop.
Ejemplo de uso de github.com/neitanod/struct
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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