Эти две недели "пожинал" плоды пропуска этапа проектирования.
Добавил в разработку статанализ, начал выводить его на максимальный уровень и понеслось : накидал себе задач, что должны быть выполнены к релизу.
В том числе провел рефкторинг структуры проекта (при этом фреймворк хоть и учебный, но обратную совместимость сохраняю до следующей мажорной версии).
Реализовал систему сервиспровайдеров, для удобной интеграции модулей и сервисов (в т.ч. и потенциальными пользователями). При этом тут уже есть точка сравнения с тем же ларавел. У меня строится граф зависимостей и сервиспровайдеры загружаются в порядке согласно задекларированных ими зависимостей. (с защитой от цикличности)
Так же сделал и систему загрузки окружения и конфигов. И сделал на основе конфиг файлов возвращающих массив, но вчера решил поступить иначе - конфигурации будут организованны на объектах, что позволит использовать типизацию, избавит от возможностей опечаток (в ключах массива), а так же поможет в IDE с теми же подсказками какие параметры есть. Т.е. тоже еще одна точка для сравнения.
В общем у меня все движется. Но релиза еще нет. Состояние на данный момент в ветке next
ArbNet у тебя есть движение?
Ой да ладно... Чет я этого не заметил. На форуме где по программированию, практически нет интересных тем. 99% от ленивых студентов которым завтра сдавать, при этом вопросы уровня "как вывести привет мир".
Здесь так же посмотрите на список популярных тем. Я конечно не СЕОшник, но что то кажется тоже "не совсем" про СЕО.
А это как раз элемент магии. UserTable имеет описание для всех столбцов (по сути массив). Может быть посмотрю, что под капотом позднее.
Ну хоть 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;
$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 и первого пункта
.... тоже с сетерами
Представь, что в php ты присваиваешь переменной значение $name = 'Johny', а по факту создал класс John(). Или пишешь new Animals() , а по факту экранировал переменную - echo $name.
Или все равно не ясно?