Вниз  SQLQueryBuilder by Koenig
- 19.10.2017 / 04:27
Витаминыч
  Супермодератор

Витаминыч 
Сейчас: Offline
О, да у вас здесь новые реализации LINQ для похапе? :gg:
__________________
 わからない!!
- 19.10.2017 / 12:18
Koenig
  Модератор форума

Koenig 
Сейчас: Offline
На пхп есть готовые linq
Норм, а чего код не в реп?
__________________
 Магистр Мёда
- 19.10.2017 / 12:28
Koenig
  Модератор форума

Koenig 
Сейчас: Offline
Заготовка
  1. Дмитрий Комполомус:
  2. <?php declare(strict_types=1);
  3.  
  4. namespace Compolomus\ORM;
  5.  
  6. class ORM
  7. {
  8.     private $data = ['id' => null];
  9.  
  10.     private $table;
  11.  
  12.     private $update = false;
  13.  
  14.     public function __construct(string $table)
  15.     {
  16.         $this->table = $table;
  17.     }
  18.  
  19.     public function __set(string $name, $value): void
  20.     {
  21.         if (isset($this->data[$name])) {
  22.             $this->update = true;
  23.         }
  24.         $this->data[$name] = $value;
  25.     }
  26.  
  27.     public function __get(string $name)
  28.     {
  29.         return $this->data[$name] ?? null;
  30.     }
  31.  
  32.     public function __isset(string $name): bool
  33.     {
  34.         return isset($this->data[$name]);
  35.     }
  36.  
  37.     public function __unset(string $name): void
  38.     {
  39.         unset($this->data[$name]);
  40.     }
  41.  
  42.     public function __call(string $name, $args)
  43.     {
  44.         preg_match("#(?P<type>all|one)?(?P<class>find|delete)(by)(?P<field>.{2,})#is", $name, $matches);
  45.         if (!count($matches)) {
  46.             throw new \Exception('Method not found');
  47.         }
  48.         array_unshift($args, $matches['field']);
  49.         if ($matches['class'] == 'find') {
  50.             array_unshift($args, $matches['type']);
  51.         }
  52.         return $this->{$matches['class']}(...$args);
  53.     }
  54.  
  55.     public function find(string $type = 'all', string $field = 'id', ...$args)
  56.     {
  57.         echo '<h1>FIND It`s work!!!</h1>';
  58.         echo 'type -> ' . $type . ' - field -> ' . $field . '<br>';
  59.         echo '<pre>' . print_r($args, true) . '</pre>';
  60.     }
  61.  
  62.     public function delete(?string $field = 'id', ...$args)
  63.     {
  64.         echo '<h1>DELETE It`s work!!!</h1>';
  65.         echo 'field -> ' . $field . '<br>';
  66.         echo '<pre>' . print_r($args, true) . '</pre>';
  67.     }
  68.  
  69.     private function insert()//: bool
  70.     {
  71.         echo '<pre>INSERT ' . print_r($this->data, true) . '</pre>';
  72.         #return true;
  73.    }
  74.  
  75.     private function update()//: bool
  76.     {
  77.         echo '<pre>UPDATE ' . print_r($this->data, true) . '</pre>';
  78.         #return true;
  79.    }
  80.  
  81.     private function save()//: bool
  82.     {
  83.         $this->update | !is_null($this->data['id'])
  84.             ? $this->update()
  85.             : $this->insert();
  86.     }
  87.  
  88.     public function __destruct()
  89.     {
  90.         $this->save();
  91.     }
  92. }
  1. Дмитрий Комполомус:
  2. $all = $users->Find('one', 'id', 1);
  3. $byName = $users->OneFindByName('Artur');
  4. $byId = $users->oneFindById(1);
  5. $byNames = $users->allFindByName('Test');
  6. $dUser = $users->delete('id', [1,2,3]);
  7. $d1User = $users->deleteByName('user');
Я уже правда переделал , местами поменял find и all|one
__________________
 Магистр Мёда
- 19.10.2017 / 17:39
GreeNLine
  Пользователь

GreeNLine 
Сейчас: Offline
// Попытался организовать юзера
Открыть спойлер

// Проводник
Открыть спойлер

- 20.10.2017 / 07:30
Koenig
  Модератор форума

Koenig 
Сейчас: Offline
GreeNLine, А чего ты билдер не пользуешь в орм?
__________________
 Магистр Мёда
- 20.10.2017 / 14:25
GreeNLine
  Пользователь

GreeNLine 
Сейчас: Offline
Цитата Koenig:
GreeNLine, А чего ты билдер не пользуешь в орм?
что такое орм? :-D
- 20.10.2017 / 14:55
DominaN
  Пользователь

DominaN 
Сейчас: Offline
Чо за функции, начинающиеся с подчеркивания?
- 20.10.2017 / 16:33
GreeNLine
  Пользователь

GreeNLine 
Сейчас: Offline
Цитата DominaN:
Чо за функции, начинающиеся с подчеркивания?
магические.
- 20.10.2017 / 16:47
Витаминыч
  Супермодератор

Витаминыч 
Сейчас: Offline
DominaN, И еще с двух подчеркиваний :gg:
__________________
 わからない!!
- 21.10.2017 / 10:56
Koenig
  Модератор форума

Koenig 
Сейчас: Offline
GreeNLine, ты угараешь? https://ru.wikipedia.org/wiki/ORM
__________________
 Магистр Мёда
Наверх  Всего сообщений: 67
Фильтровать сообщения
Поиск по теме