Генератор сущностей (EntityGenerator)
- <?php
- /**
- * @author 3kZO
- */
- class EntityGenerator
- {
- public function generate($name, array $columns = []) {
- $output = [];
- $output[] = '<?php'
- . "\r\n"
- . "\r\n" . '/**'
- . "\r\n" . ' * @author 3kZO'
- . "\r\n" . ' */'
- . "\r\n"
- . "\r\n" . 'class ' . $name
- . "\r\n" . '{'
- . "\r\n";
- foreach ($columns as $column) {
- $output[] = "\r\n\t" . 'private $' . $column . ";\r\n";
- }
- $output[] = "\r\n";
- foreach ($columns as $column) {
- if (false !== $pos = strpos($column, '_')) {
- $tokens = [];
- //$tokens[] = substr($column, 0, $pos);
- $len = strlen($column);
- $pos = 0;
- while ($pos < $len) {
- $c = strcspn($column, '_', $pos);
- if (0 == $c) {
- // $tokens[] = $column[$pos];
- $pos++;
- } else {
- $tokens[] = ucfirst(substr($column, $pos, $c));
- $pos += $c;
- }
- }
- $method = implode($tokens);
- } else {
- $method = ucfirst($column);
- }
- $output[] = "\r\n\t" . 'public function set' . $method . '($value) {' // setter
- . "\r\n\t\t" . '$this->' . $column . ' = $value;'
- . "\r\n\t" . '}'
- . "\r\n"
- . "\r\n\t" . 'public function get' . $method . '() {' // getter
- . "\r\n\t\t" . 'return $this->' . $column . ';'
- . "\r\n\t" . '}'
- . "\r\n";
- }
- //$output[] = "\r\n";
- $output[] = "\r\n" . '}'
- . "\r\n" . '?>';
- return implode($output);
- }
- }
Небольшая утилита для генерациисущностей, т.е Entities. В php есть такой пакет, как Doctrine - это, если так можно сказать система управлением данными из БД. Решения (Entity) управляются с помощью репозиториев (Repository).
- <?php
- $repository = ..->getRepository('UserRepository');
- /**
- * @var Entity
- */
- $entity = $repository->find(1); // find by id, id = 1
- // Пример:
- echo $entity->getId(); // 1
Т.е каждый репозиторий, вернет нам готовое решение, а именно класс с нужными методами, каждый метод из которого является названием колонки в таблице.
- <?php
- // EntityGenerator
- $eg = new EntityGenerator();
- $entityName = 'UserEntity';
- $entityColumns = ['id', 'login', 'password', 'created_at'];
- @file_put_contents(__DIR__ . '/src/Entity/' . $entityName . '.php', $eg->generate($entityName, $entityColumns));
- // На выходе: src/Entity/UserEntity.php
- /**
- * @author 3kZO
- */
- class UserEntity
- {
- private $id;
- private $login;
- private $password;
- private $created_at;
- public function setId($value) {
- $this->id = $value;
- }
- public function getId() {
- return $this->id;
- }
- public function setLogin($value) {
- $this->login = $value;
- }
- public function getLogin() {
- return $this->login;
- }
- public function setPassword($value) {
- $this->password = $value;
- }
- public function getPassword() {
- return $this->password;
- }
- public function setCreatedAt($value) {
- $this->created_at = $value;
- }
- public function getCreatedAt() {
- return $this->created_at;
- }
- }
- ?>