joomla/registry

Joomla Registry Package

Package info

github.com/joomla-framework/registry

Type:joomla-package

pkg:composer/joomla/registry

Statistics

Installs: 516 469

Dependents: 33

Suggesters: 7

Stars: 16

Open Issues: 3

4.0.0 2025-07-23 19:26 UTC

Requires

Suggests

  • ext-json: ext-json is needed for JSON support
  • ext-simplexml: ext-simplexml is needed for XML support
  • symfony/yaml: Install symfony/yaml if you require YAML support.

Provides

None

Conflicts

None

Replaces

None

GPL-2.0-or-later 5692d8423c9b568627df701e9fd505eae5ea8f72

frameworkregistryjoomla


README

👁 Latest Stable Version
👁 Total Downloads
👁 Latest Unstable Version
👁 License

The Registry package provides an indexed key-value data store and an API for importing/exporting this data to several formats.

Load config by Registry

use Joomla\Registry\Registry;

$registry = new Registry();

// 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');

Accessing a Registry by getter & setter

Get value

$registry->get('foo');

// Get a non-exists value and return default
$registry->get('foo', 'default');

// OR

$registry->get('foo') ?: 'default';

Set value

// Set value
$registry->set('bar', $value);

// Sets a default value if not already assigned.
$registry->def('bar', $default);

Accessing children value by path

$json = '{
 "parent" : {
 "child" : "Foo"
 }
}';

$registry = new Registry($json);

$registry->get('parent.child'); // return 'Foo'

$registry->set('parent.child', $value);

Removing values from Registry

// 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');

Accessing a Registry as an Array

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.';
}

Merge Registry

Using load* methods to merge two config files.

$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
 )
)

Merge another Registry

$object1 = '{
 "foo" : "foo value",
 "bar" : {
 "bar1" : "bar value 1",
 "bar2" : "bar value 2"
 }
}';

$object2 = '{
 "foo" : "foo value",
 "bar" : {
 "bar2" : "new bar value 2"
 }
}';

$registry1 = new Registry(json_decode($object1));
$registry2 = new Registry(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

Dump to one dimension

$array = array(
 'flower' => array(
 'sunflower' => 'light',
 'sakura' => 'samurai'
 )
);

$registry = new Registry($array);

// Make data to one dimension

$flatted = $registry->flatten();

print_r($flatted);

The result:

Array
(
 [flower.sunflower] => light
 [flower.sakura] => samurai
)

Installation via Composer

Add "joomla/registry": "~3.0" to the 'require' block in your composer.json and then run composer install.

{
 "require": {
 "joomla/registry": "~3.0"
 }
}

Alternatively, you can simply run the following from the command line:

composer require joomla/registry "~3.0"