{"id":19357748,"url":"https://github.com/joomla-framework/registry","last_synced_at":"2025-04-12T18:48:45.314Z","repository":{"id":7094596,"uuid":"8385883","full_name":"joomla-framework/registry","owner":"joomla-framework","description":"Joomla Framework Registry Package","archived":false,"fork":false,"pushed_at":"2025-03-31T09:20:22.000Z","size":7296,"stargazers_count":17,"open_issues_count":2,"forks_count":20,"subscribers_count":14,"default_branch":"3.x-dev","last_synced_at":"2025-04-03T21:13:23.285Z","etag":null,"topics":["joomla","joomla-framework","key-value","php","registry"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/joomla-framework.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"joomla","custom":"https://community.joomla.org/sponsorship-campaigns.html"}},"created_at":"2013-02-24T03:32:57.000Z","updated_at":"2025-03-31T09:18:55.000Z","dependencies_parsed_at":"2024-11-17T08:01:22.100Z","dependency_job_id":"3d60338f-9943-4c9d-9333-fb92b5f425c8","html_url":"https://github.com/joomla-framework/registry","commit_stats":{"total_commits":265,"total_committers":31,"mean_commits":8.548387096774194,"dds":0.5094339622641509,"last_synced_commit":"dc57ab21856e79d45e5a44cf6d41253a2414d110"},"previous_names":[],"tags_count":34,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joomla-framework%2Fregistry","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joomla-framework%2Fregistry/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joomla-framework%2Fregistry/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joomla-framework%2Fregistry/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/joomla-framework","download_url":"https://codeload.github.com/joomla-framework/registry/tar.gz/refs/heads/3.x-dev","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248618214,"owners_count":21134199,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["joomla","joomla-framework","key-value","php","registry"],"created_at":"2024-11-10T07:09:03.295Z","updated_at":"2025-04-12T18:48:45.279Z","avatar_url":"https://github.com/joomla-framework.png","language":"PHP","funding_links":["https://github.com/sponsors/joomla","https://community.joomla.org/sponsorship-campaigns.html"],"categories":[],"sub_categories":[],"readme":"# The Registry Package [![Build Status](https://ci.joomla.org/api/badges/joomla-framework/registry/status.svg?ref=refs/heads/3.x-dev)](https://ci.joomla.org/joomla-framework/registry)\n\n[![Latest Stable Version](https://poser.pugx.org/joomla/registry/v/stable)](https://packagist.org/packages/joomla/registry)\n[![Total Downloads](https://poser.pugx.org/joomla/registry/downloads)](https://packagist.org/packages/joomla/registry)\n[![Latest Unstable Version](https://poser.pugx.org/joomla/registry/v/unstable)](https://packagist.org/packages/joomla/registry)\n[![License](https://poser.pugx.org/joomla/registry/license)](https://packagist.org/packages/joomla/registry)\n\nThe Registry package provides an indexed key-value data store and an API for importing/exporting this data to several formats.\n\n## Load config by Registry\n\n``` php\nuse Joomla\\Registry\\Registry;\n\n$registry = new Registry();\n\n// Load by string\n$registry-\u003eloadString('{\"foo\" : \"bar\"}');\n\n$registry-\u003eloadString('\u003croot\u003e\u003c/root\u003e', 'xml');\n\n// Load by object or array\n$registry-\u003eloadObject($object);\n$registry-\u003eloadArray($array);\n\n// Load by file\n$registry-\u003eloadFile($root . '/config/config.json', 'json');\n```\n\n## Accessing a Registry by getter \u0026 setter\n\n### Get value\n\n``` php\n$registry-\u003eget('foo');\n\n// Get a non-exists value and return default\n$registry-\u003eget('foo', 'default');\n\n// OR\n\n$registry-\u003eget('foo') ?: 'default';\n```\n\n### Set value\n\n``` php\n// Set value\n$registry-\u003eset('bar', $value);\n\n// Sets a default value if not already assigned.\n$registry-\u003edef('bar', $default);\n```\n\n### Accessing children value by path\n\n``` php\n$json = '{\n    \"parent\" : {\n        \"child\" : \"Foo\"\n    }\n}';\n\n$registry = new Registry($json);\n\n$registry-\u003eget('parent.child'); // return 'Foo'\n\n$registry-\u003eset('parent.child', $value);\n```\n\n## Removing values from Registry\n\n``` php\n// Set value\n$registry-\u003eset('bar', $value);\n\n// Remove the key\n$registry-\u003eremove('bar');\n\n// Works for nested keys too\n$registry-\u003eset('nested.bar', $value);\n$registry-\u003eremove('nested.bar');\n```\n\n## Accessing a Registry as an Array\n\nThe `Registry` class implements `ArrayAccess` so the properties of the registry can be accessed as an array. Consider the following examples:\n\n``` php\n// Set a value in the registry.\n$registry['foo'] = 'bar';\n\n// Get a value from the registry;\n$value = $registry['foo'];\n\n// Check if a key in the registry is set.\nif (isset($registry['foo']))\n{\n    echo 'Say bar.';\n}\n```\n\n## Merge Registry\n\n#### Using load* methods to merge two config files.\n\n``` php\n$json1 = '{\n    \"field\" : {\n        \"keyA\" : \"valueA\",\n        \"keyB\" : \"valueB\"\n    }\n}';\n\n$json2 = '{\n    \"field\" : {\n        \"keyB\" : \"a new valueB\"\n    }\n}';\n\n$registry-\u003eloadString($json1);\n$registry-\u003eloadString($json2);\n```\n\nOutput\n\n```\nArray(\n    field =\u003e Array(\n        keyA =\u003e valueA\n        keyB =\u003e a new valueB\n    )\n)\n```\n\n#### Merge another Registry\n\n``` php\n$object1 = '{\n    \"foo\" : \"foo value\",\n    \"bar\" : {\n        \"bar1\" : \"bar value 1\",\n        \"bar2\" : \"bar value 2\"\n    }\n}';\n\n$object2 = '{\n    \"foo\" : \"foo value\",\n    \"bar\" : {\n        \"bar2\" : \"new bar value 2\"\n    }\n}';\n\n$registry1 = new Registry(json_decode($object1));\n$registry2 = new Registry(json_decode($object2));\n\n$registry1-\u003emerge($registry2);\n```\n\nIf you just want to merge first level, do not hope recursive:\n\n``` php\n$registry1-\u003emerge($registry2, false); // Set param 2 to false that Registry will only merge first level\n```\n\n## Dump to one dimension\n\n``` php\n$array = array(\n    'flower' =\u003e array(\n        'sunflower' =\u003e 'light',\n        'sakura' =\u003e 'samurai'\n    )\n);\n\n$registry = new Registry($array);\n\n// Make data to one dimension\n\n$flatted = $registry-\u003eflatten();\n\nprint_r($flatted);\n```\n\nThe result:\n\n```\nArray\n(\n    [flower.sunflower] =\u003e light\n    [flower.sakura] =\u003e samurai\n)\n```\n\n## Installation via Composer\n\nAdd `\"joomla/registry\": \"~3.0\"` to the 'require' block in your composer.json and then run `composer install`.\n\n```json\n{\n    \"require\": {\n        \"joomla/registry\": \"~3.0\"\n    }\n}\n```\n\nAlternatively, you can simply run the following from the command line:\n\n```sh\ncomposer require joomla/registry \"~3.0\"\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoomla-framework%2Fregistry","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjoomla-framework%2Fregistry","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoomla-framework%2Fregistry/lists"}