Search
Write a publication
Pull to refresh
0
0
Send message
Тоже самое, только без абстрагирования от бд

class User extends \app\system\model\ActiveRecord
{

    public function haveDiscount()
    {
        return 100 < Util::getTransactionHistorySumByPeriod($this->id, strtotime('-1month'));
    }
...
}

...
class Util
{

    public static function getTransactionHistorySumByPeriod($iId, $iStart, $iEnd = null)
    {
        $sEnd = $iEnd === null ? date('d-m-Y H:i:s') : date('d-m-Y H:i:s', $iEnd);
        $sStart = date('d-m-Y H:i:s', $iStart);

        return \app\system\Registry::get('db')->add('SELECT SUM(value) AS total')
            ->add('FROM transactions')
            ->add('WHERE "id" = :id AND "created_at" > :start AND "created_at < :end')
            ->execute([':id' => $iId, ':start' => $sStart, ':end' => $sEnd])->fetch('total');

    }
}
Повторюсь — «абстракция от базы данных» это не для смены оной, а что бы игнорировать наличие оной когда вы бизнес логику описываете

Это выглядит как ненужный слой, по своей сути дающий profit лишь в редких ситуациях. Ну ладно… у каждого свое видение одного и того же

30мс — это тоже у меня на локалке. Я думал будет понятно, простите.
Если говорить о проектировании систем то лучше уж почитать Фаулера.
И мне кажется добавление еще одной бд входит в эти 5%. В Doctrine я и в правду не захотел разбираться, как и в симфони. Из коробки симфони у меня на локалке отдает страницу за 200мс, кажется это был второй симфони. После я естественно начал гуглить оптимизацию производительности. Понял что там предстоит нешуточная работа и бросил все это дело.

Изучение пхп следует начать с:


  1. Изучения синтаксиса
  2. Изучения одного из популярных фреймворков
  3. Поднятия собственного движка

В современных фреймворках куча всего лишнего, всевозможные хелперы, обработчики, орм. Кому они нужны, если отдача простой статической страницы на таком фреймворках занимает 70мс? (тестил на локалке, Yii2).
Doctrine бесполезен в 95% случаях. Куча предобработки в запросах и ради чего? Потому что, возможно, в будущем я перенесу проект на другую SQL бд. Этого не случится в 95%ах случаев. А если и перейдете то далеко не факт что это будет sql поддерживающая бд.
Я поднял свой mvc движок, для своего маленького проекта. И страница отдается за 30мс без запросов к бд. При этом там есть нормальный роутинг, актив рекорд, автолоад классов и удобная подрубка сторонних библиотек.
Фреймворки в большинстве случаев слишком универсальны. За что вы платитесь производительностью

Information

Rating
Does not participate
Registered
Activity