PHPackages                             youwe/data-dictionary - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. youwe/data-dictionary

ActivePimcore-bundle[Utility &amp; Helpers](/categories/utility)

youwe/data-dictionary
=====================

A data dictionary for Pimcore

v0.0.8(6y ago)72.7k3gpl-3.0PHPCI failing

Since Oct 10Pushed 4y ago11 watchersCompare

[ Source](https://github.com/YouweGit/data-dictionary)[ Packagist](https://packagist.org/packages/youwe/data-dictionary)[ RSS](/packages/youwe-data-dictionary/feed)WikiDiscussions master Synced 2d ago

READMEChangelog (5)Dependencies (5)Versions (13)Used By (0)

Data Dictionary
===============

[](#data-dictionary)

Creates a diagram of the current datamodel inside Pimcore.

[![Sceenshot](https://camo.githubusercontent.com/76d580a906b28ab6c0e1a7d62f7b6edc515a4fab3b89754ddabf69d1d7b35489/68747470733a2f2f696d6167652e6962622e636f2f6d526d41674c2f53637265656e73686f742d323031382d31302d31372d61742d32332d34362d30302e706e67)](https://camo.githubusercontent.com/76d580a906b28ab6c0e1a7d62f7b6edc515a4fab3b89754ddabf69d1d7b35489/68747470733a2f2f696d6167652e6962622e636f2f6d526d41674c2f53637265656e73686f742d323031382d31302d31372d61742d32332d34362d30302e706e67)

Install
-------

[](#install)

Install the bundle with composer, go to the directory of the project and run the following command:

```
COMPOSER_MEMORY_LIMIT=3G composer require youwe/data-dictionary

```

And then enable the bundle:

```
./bin/console pimcore:bundle:install DataDictionaryBundle

```

And youre done!

#### First interface: Visitor

[](#first-interface-visitor)

Nice, so the next step is to create a class that implements the interface:

```
namespace DataDictionaryBundle\Graph\Interfaces;

interface Visitor
{
    public function setFieldDefinition($object);

    public function setClassDefinition(\Pimcore\Model\DataObject\ClassDefinition $object);

    public function setGraph(Graph $graph);

    public function getGraph():Graph;

    public function visit();
}
```

In this class you will be able to change the graph that you will receive through the **setGraph** method. Before calling the **visit** method, the data dictionary will provide the field definition (**setFieldDefinition**), the class definition (**setClassDefinition**) and the graph.

We encourage you to implement those in separated class, and not in your main DataType class.

You can also extend the class

```
\DataDictionaryBundle\Graph\Visitor\AbstractVisitor
```

That implements all the methods from the interface except the method **visit**, you will have in this class the following properties:

```
    protected $graph;
    protected $fieldDefinition;
    protected $classDefinition;
```

#### Second interface: DataDictionary

[](#second-interface-datadictionary)

After you implement your visitor class, you will have to indicate how to load it, so you will have to implement an interface that will give us a method to recover your class.

```
namespace DataDictionaryBundle\Interfaces;

use DataDictionaryBundle\Graph\Interfaces\Visitor;

interface DataDictionary
{
    public static function getVisitor(string $className = null):Visitor;

    public static function canVisit(string $className):bool;
}
```

The method **getVisitor** receive as parameter the class name of the field definition that should be visited by the data dictionary.

### Edit the services.yml to enable it

[](#edit-the-servicesyml-to-enable-it)

In the services.yml file you should add:

```
services:
    datadictionary.defaultclass: #some identifier
        class: DataDictionaryBundle\Graph\Visitor\Factory\DefaultClass #the class that implements the DataDictionary interface
        public: true
        autowiring: true
        autoconfigure: true
        tags: ['datadictionary'] #and this tag will allow us to load your class automaticaly

```

Results
-------

[](#results)

You can get the data dictionary by going to the setting (gear icon) -&gt; Show Current Data Dictionary. Then a new tab wil be opened with the data dictionary.

Or you can get the data dictionary directly going to the following URL: [http:///admin/data-dictionary/](http://%3Clocalhost%3E/admin/data-dictionary)

Remember to change the *localhost* to your own pimcore host name.

Todo
----

[](#todo)

- Create a diagram with all the classes, attributes and relations;
    - Classes;
    - Attributes;
    - Relations (basic);
    - Create specific elements for specific cases:
        - Localized fields;
        - Object Bridge
        - Bricks
        - Block;
        - Field collection;
        - Tables;
        - Classificationstore
- Generate textual documentation;
    - Create links between the diagram and the documentation;

###  Health Score

32

—

LowBetter than 72% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity23

Limited adoption so far

Community17

Small or concentrated contributor base

Maturity59

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 54.2% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~148 days

Recently: every ~291 days

Total

9

Last Release

1583d ago

Major Versions

v0.0.8 → v1.x-dev2022-01-12

### Community

Maintainers

![](https://www.gravatar.com/avatar/c02ea57a258994d3f586ba5c58bd3d66bac8567bd5501466bb75a0faad786aa9?d=identicon)[jorisros](/maintainers/jorisros)

![](https://www.gravatar.com/avatar/1dfe843a2613a05fdb04713b6b6fb8d65437ec8988daaf1dbf649045b1763189?d=identicon)[osm](/maintainers/osm)

---

Top Contributors

[![jorisros](https://avatars.githubusercontent.com/u/752283?v=4)](https://github.com/jorisros "jorisros (26 commits)")[![paulovitorbal](https://avatars.githubusercontent.com/u/1259996?v=4)](https://github.com/paulovitorbal "paulovitorbal (21 commits)")[![vmalyk](https://avatars.githubusercontent.com/u/5318027?v=4)](https://github.com/vmalyk "vmalyk (1 commits)")

###  Code Quality

TestsPHPUnit

Code StylePHP\_CodeSniffer

### Embed Badge

![Health badge](/badges/youwe-data-dictionary/health.svg)

```
[![Health](https://phpackages.com/badges/youwe-data-dictionary/health.svg)](https://phpackages.com/packages/youwe-data-dictionary)
```

###  Alternatives

[clue/graph-composer

Dependency graph visualization for composer.json

93798.0k11](/packages/clue-graph-composer)[graphp/graphviz

GraphViz graph drawing for the mathematical graph/network library GraPHP.

3232.1M49](/packages/graphp-graphviz)[graphp/algorithms

Common mathematical graph algorithms implemented in PHP

1402.9M14](/packages/graphp-algorithms)[dachcom-digital/formbuilder

Pimcore FormBuilder - create forms easily!

96269.7k](/packages/dachcom-digital-formbuilder)[elements/process-manager-bundle

The Process Manager allows you to manage (define,execute...) arbitrary processes/commands in the Pimcore backend.

49633.0k5](/packages/elements-process-manager-bundle)[pimcore/data-importer

Adds a comprehensive import functionality to Pimcore Datahub

44763.4k2](/packages/pimcore-data-importer)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
