symfony-entity-analyzer
TypeScript icon, indicating that this package has built-in type declarations

1.0.1 • Public • Published

Визуализирует энтити вашего Symfony проекта.

Установка

It is assumed that in the root of your project there is a file package.json.

npm install --save-dev symfony-entity-analyzer
# Or if you're using Yarn
yarn add --dev symfony-entity-analyzer

Использование

npx entity-analyzer
# Or if you're using Yarn
yarn entity-analyzer

--help

Options:
  -v, --version      output the version number
  --host [host]      server host (default: "localhost")
  -p, --port [port]  server port (default: 3000)
  -b, --path [path]  path to folder with entity. (defau
lt: "src/Entity")
  --no-open          it won't open your browser.
  -h, --help         output usage information

Как работает

Парсит файлы в дирекории (глубоко), определяет является ли каждый файл энтити.

Алгоритм поиска энтити:

  • должен иметь namespace
  • должен быть классом (не интерфейсом, не трейтом и т.д.)
  • должен содержан коммент класса (leadingComment)
  • в leadingComment должно быть указано что это энтити (@ORM\Entity аннотация)

Для найденного класса-энтити проходится по полям (свойствам класса) и находит отношения через парсинг аннртаций.

оддерживаются все 4 вида отношений:

  • ManyToOne
  • OneToMany
  • OneToOne
  • ManyToMany

Также поддерживаются самоссылающиеся отношения. Например, Category может иметь children и parent.

Правила валидности:

В targetEntity нужно указывать полный namespace класса

Не правильно 🔴

@ORM\ManyToOne(targetEntity="User")

Правильно 🔵

@ORM\ManyToOne(targetEntity="App\Entity\User")

Это чтобы избежать конфликтов.

Прямо перед комментом с анотацией лучше не писать другой коммент

PHP парсер может не найти нужный коммент свойсива если перед свойством другой коммент.

Не правильно 🔴

/* Columnts */

/**
 * @ORM\Column(type="text")
 */
private $text;
/* Columnts */

/**
 * @ORM\Column(type="text")
 */
private $text;

// my comment
/**
 * @ORM\ManyToOne(targetEntity="App\Entity\Post")
 * @ORM\JoinColumn(nullable=false, onDelete="CASCADE")
 */
private $post;

Правильно 🔵

- /* Columnts */
- 
/**
 * @ORM\Column(type="text")
 */
private $text;
 
- // my comment
/**
 * @ORM\ManyToOne(targetEntity="App\Entity\Post")
 * @ORM\JoinColumn(nullable=false, onDelete="CASCADE")
 */
private $post;

Это правило не касается комментария над классом.

Package Sidebar

Install

npm i symfony-entity-analyzer

Weekly Downloads

1

Version

1.0.1

License

MIT

Unpacked Size

1.27 MB

Total Files

48

Last publish

Collaborators

  • ilyazelenko