The Registry package provides an indexed key-value data store and an API for importing/exporting this data to several formats.
useJoomla\Registry\Registry;
$registry = newRegistry();
// Load by string$registry->loadString('{"foo" : "bar"}');
$registry->loadString('<root></root>', 'xml');
// Load by object or array$registry->loadObject($object);
$registry->loadArray($array);
// Load by file$registry->loadFile($root . '/config/config.json', 'json');$registry->get('foo');
// Get a non-exists value and return default$registry->get('foo', 'default');
// OR$registry->get('foo') ?: 'default';// Set value$registry->set('bar', $value);
// Sets a default value if not already assigned.$registry->def('bar', $default);$json = '{ "parent" : { "child" : "Foo" }}';
$registry = newRegistry($json);
$registry->get('parent.child'); // return 'Foo'$registry->set('parent.child', $value);// Set value$registry->set('bar', $value);
// Remove the key$registry->remove('bar');
// Works for nested keys too$registry->set('nested.bar', $value);
$registry->remove('nested.bar');The Registry class implements ArrayAccess so the properties of the registry can be accessed as an array. Consider the following examples:
// Set a value in the registry.$registry['foo'] = 'bar';
// Get a value from the registry;$value = $registry['foo'];
// Check if a key in the registry is set.if (isset($registry['foo']))
{
echo'Say bar.';
}$json1 = '{ "field" : { "keyA" : "valueA", "keyB" : "valueB" }}';
$json2 = '{ "field" : { "keyB" : "a new valueB" }}';
$registry->loadString($json1);
$registry->loadString($json2);Output
Array(
field => Array(
keyA => valueA
keyB => a new valueB
)
)
$object1 = '{ "foo" : "foo value", "bar" : { "bar1" : "bar value 1", "bar2" : "bar value 2" }}';
$object2 = '{ "foo" : "foo value", "bar" : { "bar2" : "new bar value 2" }}';
$registry1 = newRegistry(json_decode($object1));
$registry2 = newRegistry(json_decode($object2));
$registry1->merge($registry2);If you just want to merge first level, do not hope recursive:
$registry1->merge($registry2, false); // Set param 2 to false that Registry will only merge first level$array = array(
'flower' => array(
'sunflower' => 'light',
'sakura' => 'samurai'
)
);
$registry = newRegistry($array);
// Make data to one dimension$flatted = $registry->flatten();
print_r($flatted);The result:
Array
(
[flower.sunflower] => light
[flower.sakura] => samurai
)
Add "joomla/registry": "~4.0" to the 'require' block in your composer.json and then run composer install.
{
"require": {
"joomla/registry": "~4.0"
}
}Alternatively, you can simply run the following from the command line:
composer require joomla/registry "~4.0"