Александр Воробьев

Александр Воробьев
Рейтинг
66
Регистрация
03.02.2020

Эти две недели "пожинал" плоды пропуска этапа проектирования.

Добавил в разработку статанализ, начал выводить его на максимальный уровень и понеслось : накидал себе задач, что должны быть выполнены к релизу.

В том числе провел рефкторинг структуры проекта (при этом фреймворк хоть и учебный, но обратную совместимость сохраняю до следующей мажорной версии). 

Реализовал систему сервиспровайдеров, для удобной интеграции модулей и сервисов (в т.ч. и потенциальными пользователями). При этом тут уже есть точка сравнения  с тем же ларавел.  У меня строится граф зависимостей и сервиспровайдеры загружаются в порядке согласно задекларированных ими зависимостей. (с защитой от цикличности)

Так же сделал и систему загрузки окружения и конфигов. И сделал на основе конфиг файлов возвращающих массив, но вчера решил поступить иначе - конфигурации будут организованны на объектах, что позволит использовать типизацию, избавит от возможностей опечаток (в ключах массива), а так же поможет в IDE с теми же подсказками какие параметры есть. Т.е. тоже еще одна точка для сравнения.

В общем у меня все движется. Но релиза еще нет. Состояние на данный момент в ветке next

ArbNet у тебя есть движение?

Volovikov #:
т, акб садится быстро, разваливаются, ржавеют мгновенно
Расскажешь когда сядет аккум? А сколько лет/дней ждать ржавчину?
ivanko44 #:
Миф. Профильные тематические форумы снимают сливки,

Ой да ладно... Чет я этого не заметил. На форуме где по программированию, практически нет интересных тем.  99% от ленивых студентов которым завтра сдавать, при этом вопросы уровня "как вывести привет мир".

Здесь так же посмотрите на список популярных тем. Я конечно не СЕОшник, но что то кажется тоже "не совсем" про СЕО.

MrPi #:
Полную реализацию можно для примера? Откуда прилетело getName()? 

А это как раз элемент магии. UserTable имеет описание для всех столбцов (по сути массив). Может быть посмотрю, что под капотом позднее.

softerra #:
Когда презентация?
Устали ждать ..
Которая?
MrPi #:
Вы пришли в школу и вас учат, что 2x2=4, а после, какой-то фреймворк решил, что 5. Какая разница, ведь выполняет?

Ну хоть php в этом плане не плюсы где можно плюс и минус переопределить :)

class MyInt {
    int value;
public:
    MyInt(int v) : value(v) {}

    MyInt operator+(const MyInt& other) const {
        return MyInt(value + other.value * 2);
    }

    int get() const { return value; }
};

MyInt a(5), b(3);
MyInt c = a + b;
MrPi #:
Для ДЕБАГА важно. Вам важно писать на php? Вот есть нативные вызовы, синтаксический сахар, конструкции. Это нативные. Это база. Вы пришли в школу и вас учат, что 2x2=4, а после, какой-то фреймворк решил, что 5. Какая разница, ведь выполняет?
Стоп. Здесь речь уже ведь про результат выполнения, а не то как это выглядит при вызове. В этом случае глядим в контракт фреймворка, видим что там с поправкой на ветер и проходим мимо.
MrPi #:

$user->getName() - т.е. при таком вызове вы не обращаетесь к экземлпляру класса $user с публичным методом getName, а вызываете условно СТАТИЧНЫЙ метод abracadabra или не метод, а объект?

или всё же метод getName() где через QB получаете значение поля user из БД?

Ну там, если полностью и в одном месте (можно оперировать коллекциями, есть вариации, но для примера), то как то так:

$user = UserTable::query()
  ->addSelect('name')
  ->addSelect('id')
  ->where('lastname','Petrov')
  ->fetchObject();

echo $user?->getName();

Кстати, вспомнил где на практике эта магия мне как раз таки "зашла".  Больше всего я работаю с Битрикс. Для того что бы создать свою таблицу наследуешься от DataManager, описываешь поля, потом консолькой создаешь файл аннотаций. все. Далее можно $user->setName(), $user->getName(). (вот whereName кстати нет :) ) мне нравится. подсветка есть все ок. Альтернатива?

1. использовать $user->get('name') (главное опечатку не допустить и помнить какие поля есть)

2. Наплодить геттеров. которые будут вызывать get и первого пункта

.... тоже с сетерами

MrPi #:

Представь, что в php ты присваиваешь переменной значение $name = 'Johny', а по факту создал класс John(). Или пишешь new Animals() , а по факту экранировал переменную - echo $name.

Или все равно не ясно?

Тут надо оценивать именно результат.  Допустим $name= ' johny' создает класс. ок. мне важно что бы  echo 'Hello',$name;  выдало "Hello johny". а там, как это выглядит под капотом пофиг.
Всего: 1073