19.10.2017 / 04:27 | |
Витаминыч Супермодератор Сейчас: Offline
Имя: Василиус Откуда: RZN Регистрация: 20.04.2012
| О, да у вас здесь новые реализации LINQ для похапе? __________________
わからない!! |
19.10.2017 / 12:18 | |
Koenig Модератор форума Сейчас: Offline
Имя: Дмитрий Откуда: Калининград(Koenigsberg) Регистрация: 23.01.2011
| На пхп есть готовые linq Норм, а чего код не в реп?
__________________
Магистр Мёда |
19.10.2017 / 12:28 | |
Koenig Модератор форума Сейчас: Offline
Имя: Дмитрий Откуда: Калининград(Koenigsberg) Регистрация: 23.01.2011
| Заготовка Дмитрий Комполомус:
<?php declare(strict_types=1);
namespace Compolomus\ORM;
class ORM
{
private $data = ['id' => null];
private $table;
private $update = false;
public function __construct(string $table)
{
$this->table = $table;
}
public function __set(string $name, $value): void
{
if (isset($this->data[$name])) {
$this->update = true;
}
$this->data[$name] = $value;
}
public function __get(string $name)
{
return $this->data[$name] ?? null;
}
public function __isset(string $name): bool
{
return isset($this->data[$name]);
}
public function __unset(string $name): void
{
unset($this->data[$name]);
}
public function __call(string $name, $args)
{
preg_match("#(?P<type>all|one)?(?P<class>find|delete)(by)(?P<field>.{2,})#is", $name, $matches);
if (!count($matches)) {
throw new \Exception('Method not found');
}
array_unshift($args, $matches['field']);
if ($matches['class'] == 'find') {
array_unshift($args, $matches['type']);
}
return $this->{$matches['class']}(...$args);
}
public function find(string $type = 'all', string $field = 'id', ...$args)
{
echo '<h1>FIND It`s work!!!</h1>';
echo 'type -> ' . $type . ' - field -> ' . $field . '<br>';
echo '<pre>' . print_r($args, true) . '</pre>';
}
public function delete(?string $field = 'id', ...$args)
{
echo '<h1>DELETE It`s work!!!</h1>';
echo 'field -> ' . $field . '<br>';
echo '<pre>' . print_r($args, true) . '</pre>';
}
private function insert()//: bool
{
echo '<pre>INSERT ' . print_r($this->data, true) . '</pre>';
#return true;
}
private function update()//: bool
{
echo '<pre>UPDATE ' . print_r($this->data, true) . '</pre>';
#return true;
}
private function save()//: bool
{
$this->update | !is_null($this->data['id'])
? $this->update()
: $this->insert();
}
public function __destruct()
{
$this->save();
}
}
Дмитрий Комполомус:
$all = $users->Find('one', 'id', 1);
$byName = $users->OneFindByName('Artur');
$byId = $users->oneFindById(1);
$byNames = $users->allFindByName('Test');
$dUser = $users->delete('id', [1,2,3]);
$d1User = $users->deleteByName('user');
Я уже правда переделал , местами поменял find и all|one __________________
Магистр Мёда |
19.10.2017 / 17:39 | |
GreeNLine Пользователь Сейчас: Offline
Имя: Саша Регистрация: 02.02.2012
| // Попытался организовать юзера Открыть спойлер Закрыть спойлер <?php
namespace framework\user;
/**
* @author 3kZO
*/
class User
{
private $db;
/** @var string */
private $token;
/** @var [] */
public $__data;
public function __construct($db) {
$this->db = $db;
}
public function setToken($token) {
$this->token = $token;
return $this;
}
public function authentication() {
$rs = $this->db->executeQuery('SELECT user_id FROM sessions
WHERE token = ?;', [$this->token]);
if (0 != $rs->getRowCount()) {
$rs->first();
$user_id = $rs->getInt('user_id');
$this->__data = (new \framework\user\models\User())
->findById($user_id)
->__data;
}
}
public function isLoggedIn() {
return null !== $this->__data;
}
public function __get($key) {
if (array_key_exists($key, $this->__data))
return $this->__data[$key];
}
}
// Проводник Открыть спойлер Закрыть спойлер <?php
namespace framework\providers;
use framework\ServiceProviderInterface;
use framework\user\User;
/**
* @author 3kZO
*/
class UserServiceProvider implements ServiceProviderInterface
{
public function register($container) {
$container['user'] = $container->singleton(function($container) {
return new User($container['db']);
});
}
}
|
20.10.2017 / 07:30 | |
Koenig Модератор форума Сейчас: Offline
Имя: Дмитрий Откуда: Калининград(Koenigsberg) Регистрация: 23.01.2011
| GreeNLine, А чего ты билдер не пользуешь в орм?
__________________
Магистр Мёда |
20.10.2017 / 14:25 | |
GreeNLine Пользователь Сейчас: Offline
Имя: Саша Регистрация: 02.02.2012
| Цитата Koenig: GreeNLine, А чего ты билдер не пользуешь в орм?что такое орм? |
20.10.2017 / 14:55 | |
DominaN Пользователь Сейчас: Offline
Имя: Кирилл Откуда: Смоленск Регистрация: 28.09.2011
| Чо за функции, начинающиеся с подчеркивания?
|
20.10.2017 / 16:33 | |
GreeNLine Пользователь Сейчас: Offline
Имя: Саша Регистрация: 02.02.2012
| Цитата DominaN: Чо за функции, начинающиеся с подчеркивания?магические.
|
20.10.2017 / 16:47 | |
Витаминыч Супермодератор Сейчас: Offline
Имя: Василиус Откуда: RZN Регистрация: 20.04.2012
| DominaN, И еще с двух подчеркиваний __________________
わからない!! |
21.10.2017 / 10:56 | |
Koenig Модератор форума Сейчас: Offline
Имя: Дмитрий Откуда: Калининград(Koenigsberg) Регистрация: 23.01.2011
| __________________
Магистр Мёда |