Форум программистов, компьютерный форум, киберфорум
Бета-тестирование
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
 Аватар для pgb
-508 / 32 / 0
Регистрация: 22.09.2015
Сообщений: 1,232

Обсудите разработку моего фреймворка

26.05.2022, 12:01. Показов 22918. Ответов 308
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую всех веб-мастеров!

Я разработал свой фреймворк для создания сайтов. На данном этапе он ещё сырой. Осталось доделать контрольную панель(веб-интерфейс для доработок фреймворка прямо на сайте, это почти как админ панель для администрирования сайта, но для разработчика\программиста). Также нет дизайна нужно будет сделать разные блоки\компоненты и хотя-бы пару скинов\тем.

Начал записывать видео с объяснением как что делается. Хочется получать обратную связь от людей кто занимается веб-разработкой. На данном этапе интересуют предложения по настройке контрольной панели и дизайна.

Хочется найти единомышленников кто хочет делать сайты на таком фреймворке, таким могу дать скрипт фреймворка если увижу заинтересованность в сотрудничестве.
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.05.2022, 12:01
Ответы с готовыми решениями:

Обсудите моё задание (Страуструп Б.) Последовательности слов
Обсудите моё задание (Страуструп Б. Язык программирования С++. Специальное издание, 3-изд. Бином.2004) 145 ст. задание 11. ...

обсудите решение беспроводной сети...кто чем может...
День добрый...начну с описания ситуации: имеются два объекта примерно на расстоянии 4-5 км...проблема в том ,что нет прямой видимости...

Шел n-й год(n нечетное число).Цифры моего возраста совпадают с двумя последними цифрами года моего рождения.По вводимому n определить наши годы рожден
Program test uses crt; var n,g,d,f:integer; begin clrscr; writeln('vvedite nineshniy god,nechetnii'); readln(n); g:=n mod...

308
3061 / 1463 / 265
Регистрация: 16.03.2008
Сообщений: 6,510
Записей в блоге: 2
09.03.2023, 10:05
Студворк — интернет-сервис помощи студентам
Дополню
Цитата Сообщение от pgb Посмотреть сообщение
Я постоянно прошу чтобы мне показали свои работы, что сделали, чтобы оценить квалификацию
https://vikroy-ka.ru/

Большинство конкурентов продают выкройки построенные по типовым размерам. Т.е. как бы вы заходите в магазин и покупаете просто по размеру. Если у вас не стандартная фигура (а таких людей большинство) то вы будете выбирать чтоб "более менее сидело" или забьете на это.

А вот выкройки по индивидуальным меркам, тут конкурентов нет (точнее знаю двоих, но они отстают по возможностям). Это уже не аналог похода в магазин. Тут вы пошли к портному и вам сшили конкретно под вас.

Проблем ваша правда в том, что для вас сайт, это набор страниц. Для меня - это еще и бекенд иногда простой иногда сложнее, на данном конкретном проекте фронтовая часть и генерация страниц (они сделаны на Битрикс, и вообще чуть чуть исправленный штатный шаблон) это 1% от всех работ по сайту. Основная кухня в бекенде. При этом там даже в принципе нельзя применять ни каких фреймворков, т.к. нет под эту задачу ни чего.

Добавлено через 4 минуты
При этом это проект который я делаю в свободное время. А в рабочее время есть проекты клиентов. Их много. Я в вебе с 2009года, а о этого с 1994 софт разрабатывал. Какой смысл их перечислять? Вы то и одного не можете показать.

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


Так а что можете рабочего предъявить вы?
0
Эксперт .NET
 Аватар для Rius
13385 / 7837 / 1698
Регистрация: 25.05.2015
Сообщений: 23,840
Записей в блоге: 14
09.03.2023, 10:09
Цитата Сообщение от pgb Посмотреть сообщение
Я постоянно прошу чтобы мне показали свои работы, что сделали, чтобы оценить квалификацию. Ничего не показываете, а значит ничего нет, простая логика.
Мы вашу работу вообще не видели целиком, а, значит, её нет? А по тому, что показано здесь и сказано вами, и оценили, соответственно, вашу квалификацию.

Те же, кто реально получает деньги за работу, не могут её ни показать, ни упомянуть. С вами такого не случалось , поэтому вы не знаете, да?
2
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,696
Записей в блоге: 29
09.03.2023, 11:14
самое интересное -вопрос про квалификацию возник у ТС, только когда его самого попросили рассказать про свой опыт, после чего он психанул и убежал)) По опыту понятно: любитель что-то пишет дома на коленке, да и пусть себе, просто не надо говорить что фреймворк хоть чего то стоит и сам что-то умеешь. Ну или надо предьявить свою нетленку.

Цитата Сообщение от Rius Посмотреть сообщение
С вами такого не случалось , поэтому вы не знаете, да?
он про гит и тесты от нас узнал, какие там НДА, про такое и не слышал, с заказчиками он никогда не общался, бумаг не подписывал
0
Эксперт .NET
 Аватар для Usaga
14370 / 9471 / 1360
Регистрация: 21.01.2016
Сообщений: 35,742
09.03.2023, 11:30
Цитата Сообщение от Welemir1 Посмотреть сообщение
после чего он психанул и убежал))
Он так часто делает. Я ему прямые вопросы задаю, а он делает вид, что их не видит)
0
3061 / 1463 / 265
Регистрация: 16.03.2008
Сообщений: 6,510
Записей в блоге: 2
09.03.2023, 12:38
Глава 2 Часть 2. (продолжаем разбирать Request)

В этом методе несколько раз встречаются конструкции по одному "шаблону"
PHP
1
2
3
4
if ($par = $request['WHERE'] ?? false) {
// здесь переменная $par иногда используется иногда нет
}
// далее переменная $par НЕ используется
PHP
1
2
3
4
5
if (isset($request['WHERE'])) {
// здесь переменная $par иногда используется иногда нет
// по этому создаем ее, только в случае необходимости 
}
// далее переменная $par НЕ используется
Посыпаю голову пеплом.. Поспешил. Эти коды не идентичные. Так что эту предъяву снимаю

Добавлено через 47 минут
Раз уж я лоханулся с предыдущим сообщением .

На этот раз про лаконичность. (ведь ТС заявлял про лаконичность своего кода)

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
        $fields = $this->fields;
        $keys = array_keys($fields);
        if ($par = $request['count'] ?? false) {
            $fld = 'COUNT(' . $request['count'] . ')';
        } else {
            if (isset($request['fields'])) {
                $fld = $request['fields'];
                if (!is_array($fld)) $fld = [$fld];
                $fld = array_filter($fld, function ($val) use ($keys) {
                    return in_array($val, $keys);
                });
            } else if (isset($request['!fields'])) {
                $fld = $request['!fields'];
                $fld = array_filter($keys, function ($val) use ($fld) {
                    return !in_array($val, $fld);
                });
            }
            $fld = isset($fld) ? '`' . implode('`,`', $fld) . '`' : '*';
        }
1 Тут как раз $par не нужна
2. else if - а есть elseif . могу ошибаться, но подозреваю под капотом if... elseif ... else преобразуется в одну общую таблицу переходов, а если разбить как у ТС. их будет две и обрабатываться будут отдельно... Да это все мелочи... Но зачем разделять?
3. для безымянных коллбеков здесь есть более подходящий вариант fn.

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
        $keys = array_keys($this->fields);
        if ($request['count'] ?? false) {
            $fld = 'COUNT(' . $request['count'] . ')';
        } else {
            if (isset($request['fields'])) {
                $fld = is_array($request['fields']) ? $request['fields'] : [$request['fields']];
                $fld = array_filter($fld, fn ($val) =>in_array($val, $keys));
            } elseif (isset($request['!fields'])) {
                $fld = $request['!fields'];
                $fld = array_filter($request['!fields'], fn ($val) => !in_array($val, $fld));
            }
            $fld = isset($fld) ? '`' . implode('`,`', $fld) . '`' : '*';
        }
Разве этот код не лаконичнее. (Правда если начать дорабатывать этот код под все возможности SQL то он будет разбухать.. По хорошему тут вообще надо иначе все это организовывать.

Кроме того, я б перед колбеками (не важно function и fn) поставил бы static. (В том варианте как сейчас внутрь попадает $this) и там могут быть проблемы со сборщиком мусора - а значит с производительностью и памятью)

Добавлено через 3 минуты
Обратите внимание на этот код. Это весь код собирающий запрашиваемые поля. И из него становится видно, что одновременный запрос к нескольким таблицам (join или "просто") с точки зрения полей не поддерживается. А это уже важное ограничение системы.

Так же не доступны агрегатные функции, кроме count. Да и то, она так же ограниченно. (все это говорит о том, что построитель запросов не поддерживает и группировку)

Добавлено через 4 минуты
Так же очевидна и разница подхода к параметрам

Здесь мы проверяем существует ли параметр в массиве, а так же не равен ли он false
PHP
1
if ($request['count'] ?? false)

А здесь мы просто проверяем существует ли параметр в массиве, т.е., в отличии от $request['count'] он воспримется и со значением false
PHP
1
if (isset($request['fields']))
Т.е. имеем интерфейс взаимодействия с фреймворком с разными подходами в рамках одного и того же параметра. Т.е. если все приводить к единому поведению, то надо либо убирать "?? false" везде либо добавлять
0
 Аватар для pgb
-508 / 32 / 0
Регистрация: 22.09.2015
Сообщений: 1,232
09.03.2023, 15:52  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Логика ребёнка, если честно. Большая часть программистов не может ничего показать потому, что не является владельцем кода который пишет. Внезапно да? Кстати, а ты можешь свою работу показать?) Тоже ведь нет, ибо нечего показывать.
Внезапно то что код который вы как бы пишите фирме или ещё кому-то не является вашим вы за этот код получили на хлебушек и всё. Кроме того многие кичатся типа работают в крупных компаниях и делают проекты с миллионными посещениями. Так это не является фактором квалификации, а наоборот чем больше коллектив тем больше можно пофилонить и гордится типа принимали участие протирая штанишки.

Я прошу показать, что вы лично сделали. Вот voral, показал свою школьную поделку для жены, продажи выкроек зато мнит себя профи, такой сайт делается на коленке за пару часов. Смею согласится сайт конечно какой никакой, но есть, пользы маловато конечно, но это хоть что-то, надеюсь кому-то и полезен.

А вот нормальные, хорошие, серьёзные проекты у кого-то есть, вроде задуманного мной? И вот не надо ссылаться что типа работа, дела и прочее, время тут трындеть и всякой ерундой заниматься находите. А вот создать что-то действительно стоющее без изобретения велосипедов как я на готовых инструментах, неужели не способны? Так если подумать и сделать, то такой проект будет вас кормить и не только вас многие годы, да ещё и пользу окружающим приносить.

Но к сожалению весь ваш профессионализм сводится к тому чтобы ходить на работу, протирать там штанишки, мнить себя крутыми программистами и плеваться на тех кто чего-то пытается в этой жизни изменить создавая что-то своё.
Цитата Сообщение от Welemir1 Посмотреть сообщение
самое интересное -вопрос про квалификацию возник у ТС, только когда его самого попросили рассказать про свой опыт, после чего он психанул и убежал))
Нет, я никуда не убежал, ржу над вами как обычно, купив попкорна побольше, наблюдая над вашим сериалом..
0
3061 / 1463 / 265
Регистрация: 16.03.2008
Сообщений: 6,510
Записей в блоге: 2
09.03.2023, 16:14
Цитата Сообщение от pgb Посмотреть сообщение
Вот voral, показал свою школьную поделку для жены, продажи выкроек зато мнит себя профи, такой сайт делается на коленке за пару часов.
Ты за три часа не смог вывести спсиок книг с авторами. И дело даже не в полученной ошибке, твой код бы этого и не позволил сделать.

Я себя не мню профи. Я просто работаю работаю давно, пиками мерять нет смысла - попробуй защитить свой код.

Цитата Сообщение от pgb Посмотреть сообщение
такой сайт делается на коленке за пару часов.
трындеть не мешки ворочать. Сделай хоть что то рабочее сначала.

Цитата Сообщение от pgb Посмотреть сообщение
пользы маловато конечно но
Ммм.. т.е. у тебя есть квалификация оценить ценность сайта для тех кто шьет? И много ты за свою жизнь сшил? (подозреваю множество)

Добавлено через 49 секунд
Цитата Сообщение от pgb Посмотреть сообщение
Я прошу показать, что вы лично сделали.
Я показал. Твоя очередь. Ты пока ни чего рабочего не показал.

Добавлено через 2 минуты
Цитата Сообщение от pgb Посмотреть сообщение
А вот нормальных, хороших. серьёзные проекты у кого-то есть вроде задуманного мной?
Вот. "задуманного".... )) Задуманное и сделанное это огромная разница... Мой задуманный проект на много круче твоего:
Открываешь страницу на нем одна кнопка "Сделать крутой сайт". Примерно в мыслях представляешь что хочешь сделаь, нажимаешь кнопку. и сайт готов. Одна секунда и аналог гугла (с заполненной базой) готов, клик - и вот уже вк уходит в небытие....

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

Добавлено через 4 минуты
Цитата Сообщение от pgb Посмотреть сообщение
такой сайт делается на коленке за пару часов.
Кстати, если что я могу дать твои контакты - у меня хотели его выкупить (да и хакнуть пытались)... сделаешь им за два часа сайт, и потом как поется "и всю жизнь получать гонорар" (с)Чиж и Ко

Не по теме:


Изощренны метод избавиться от конкурентов получится :)



Добавлено через 6 минут
Цитата Сообщение от pgb Посмотреть сообщение
Нет, я никуда не убежал, ржу над вами как обычно, купив попкорна побольше,
Закономерно. Если бы умел программировать - было бы, что возразить с примерами и т.п. а так только "сопли пузырями и биение себя пяткой в грудь".

Я согласен с тем как выше говорил. Что вы просто от недостатка внимания это все затеяли, только ни как не можете понять. Человек который пилит свой велосипед, воспринимает критику, исправляет ошибки, учится - он и общение получит и уважать его будет, даже пока он еще чайник. А вы выбрали роль "местного дурачка". А тут все сложнее. Это надоест, и просто от вас будут отмахиваться периодически. Ну вылезете вы в какой то теме еще (как вы любите), ну дадут ссылку на эту тему... и все..... а там уж смеетесь вы над кем то или нет... ни кого не трогает вообще.

Так где посмотреть ваш готовый работающий проект?
5
Эксперт .NET
 Аватар для Usaga
14370 / 9471 / 1360
Регистрация: 21.01.2016
Сообщений: 35,742
09.03.2023, 16:47
Цитата Сообщение от pgb Посмотреть сообщение
Внезапно то что код который вы как бы пишите фирме или ещё кому-то не является вашим вы за этот код получили на хлебушек и всё.
Да, не является. В чём проблема? Монтажники, которые окна пластиковые ставят, тоже не являются владельцами этих окон. Как и маршруточники не на своих маршрутках катаются. Дальше что?

Цитата Сообщение от pgb Посмотреть сообщение
Кроме того многие кичатся типа работают в крупных компаниях и делают проекты с миллионными посещениями. Так это не является фактором квалификации, а наоборот чем больше коллектив тем больше можно пофилонить и гордится типа принимали участие протирая штанишки.
Ты лично это видел, или это очередной бред из пальца высосанный? Про метрики и KPI ты конечно же не слышал, да? Чем крупнее контора, тем строже там контроль за сотрудниками. Но тебе откуда это знать...

Цитата Сообщение от pgb Посмотреть сообщение
Я прошу показать, что вы лично сделали.
Система, над которой я работаю, закрытая. Это b2b решение. На неё нет ссылки в интернете. Оно крутится в интрасетях предприятий.

Цитата Сообщение от pgb Посмотреть сообщение
А вот нормальные, хорошие, серьёзные проекты у кого-то есть, вроде задуманного мной? И вот не надо ссылаться что типа работа, дела и прочее, время тут трындеть и всякой ерундой заниматься находите. А вот создать что-то действительно стоющее без изобретения велосипедов как я на готовых инструментах, неужели не способны? Так если подумать и сделать, то такой проект будет вас кормить и не только вас многие годы, да ещё и пользу окружающим приносить.
Дружище, так ты велосипед и изобретаешь. Очередной фреймворк. Пользу окружающий приносят конечные продукты. Не только интрументы. Не забывай, что любой фреймворк создаётся для того, чтобы на его основе делать полезное что-то.

Цитата Сообщение от pgb Посмотреть сообщение
Но к сожалению весь ваш профессионализм сводится к тому чтобы ходить на работу, протирать там штанишки, мнить себя крутыми программистами и плеваться на тех кто чего-то пытается в этой жизни изменить создавая что-то своё.
Так создавай. Пальцы веером зачем распускать? И давай ещё раз уточним: твоей поделкой кто-то пользуется? Кто-то тебе за это платит? Кто-то хоть раз "спасибо" сказал? А моим трудом пользуются. И деньги оно приносит. И облегчает работу людям. Так что не надо тут профессионализм упоминать. У тебя его вообще нет.

Цитата Сообщение от pgb Посмотреть сообщение
Нет, я никуда не убежал, ржу над вами как обычно, купив попкорна побольше, наблюдая над вашим сериалом..
Ну, тебе только ржать и остаётся. Уже придумал, что ответить на вопрос о том почему использовать фреймворки - зашквар, но твой фреймворк - не зашквар? Или логика и здравый смысл вообще не твоё?)

Добавлено через 5 минут
Цитата Сообщение от pgb Посмотреть сообщение
Внезапно то что код который вы как бы пишите фирме или ещё кому-то не является вашим вы за этот код получили на хлебушек и всё.
На самом деле, у этой болезни есть название - NIH - Not Invented Here. Это - патологическое, маниакальное, стремление делать "своё". Вопреки здравому смыслу. Единственное важное потребительское качество такого продукта - его авторство. Остальное не важно.

Как правило больной мнит себя Д'Артаньяном. А так же занимается агрессивным рационализаторством (git мне не нужон, ибо оно говно\глючит\я выше этого).

Не узнаёшь себя?
4
3061 / 1463 / 265
Регистрация: 16.03.2008
Сообщений: 6,510
Записей в блоге: 2
10.03.2023, 11:14
Глава 2 Часть 2. (продолжаем разбирать Request)

Код отвечающий за построение WHERE части запроса
Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    if($par=$request['WHERE']??false){
        preg_match_all('/(!)?(\w+)([!><=]+)(\w+)(\s?[&|]\s?)?/',$par,$mth);
        foreach($mth[2] as $num=>$key)
            $par=str_replace($mth[0][$num],in_array($key,$keys)?
                $this->Not($mth[1][$num]).' `'.$key.'`'.$mth[3][$num].
                $this->Valid($mth[4][$num],$fields[$key]['TYPE']).
                $this->AndOr($mth[5][$num]):'',$par);
        if($sql)$sql.=' AND';
        $sql.=$par;
    }
    if($par=$request['IN']??false){$mth=[];
        preg_match('/(\w+)\s(.*)/',$par,$mth);
        $par=explode(',',$mth[2]);Valid::Array($par,'INT');
        $sql.=' `'.$mth[1].'` IN ('.implode(',',$par).')';
    }

И сразу нас встречает жесткий инструмент кастрирования языка SQL.
PHP
1
preg_match_all('/(!)?(\w+)([!><=]+)(\w+)(\s?[&|]\s?)?/',$par,$mth);
Эта регулярка разбирает строку WHERE передаваемую параметром. Тут (pgb, копируй в доку) нас встречает свой синтаксис:
! перед выражением (между символом и именем поля не должно быть пробелов) это "not"
& заменяется на AND
| заменяется на OR

Ну а дальше погнали пробовать . Уточню. ряд методов вызываемых автор не указал в "цепочке вызовов". по этому я предположил как они работают
PHP
1
2
3
$data=$this->Base->Load('book',['WHERE' =>'age=123 | age=34 & id = 10']);
// получаем в запросе `age`=123 OR  `age`=34 AND id = 10
// обратите внимание на отсутствие апострофов у id. Т.е. алгоритм не стабильный
Ура работает, но если вчитаться в имена полей, то возникает подозрение что мы попросили не правильно с точки зрения логики. Исправляемся
PHP
1
2
$data=$this->Base->Load('book',['WHERE' =>'(age=123 | age=34) & id = 10']);
// получаем в запросе "( `age`=123 OR  `age`=34) & id = 10"
упс.... что характерно, мы тут не получим ошибку не правильного синтаксиса SQL (мы работаем с MySQL), ма получим пустую выборку, даже если есть записи, которые устраивают нашему желанию

Вывод: скобки не поддерживаются

Поехали дальше
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$request['WHERE'] = "name='apple'";
// name='apple' (обратите внимание, здесь поле не обрамлено в апострофы - т.е выражение не было обработано, 
// но сработает
 
$request['WHERE'] = 'name=apple'; 
// `name`='apple' выражение обработано, 
// тут я только предположил что метод Valid обрамляет кавычками значение. допустим  ок
 
$request['WHERE'] = 'name=яблоко & name=test';
// name=яблоко &  `name`='test'
// не работает (тут есть еще зависимость от конфига сервера и проекта, но в большинстве случаев - нет).
// (не хватает модификатора в регулярке)
 
$request['WHERE'] = 'name=red apple & name=test'; 
//`name`='red' apple &  `name`='test'
// не работает.
 
$request['WHERE'] = 'name like '%red''; 
//name like '%red'
//сработает но только потому, что нет еще условий, это пролетело мимо обработки и я поставил кавычки сам
 
$request['WHERE'] = 'name like '%red' & name=test'; 
//name like '%red' &  `name`='test'
//не сработает
Вывод.
1 Построитель запросов НЕ работает c UTF строками
2 Построитель запросов НЕ работает со строками более одного слова
3 Нельзя использовать скобки
4 Выражения типа like и прочих, возможны только если условие одно благодаря тому что оно пролетает мимо обработки (но есть "Но" о котором далее). Так же по "in" есть дополнительная особенность о которой ниже

Формирование строки на основе работы регулярки.
PHP
1
2
3
4
5
        foreach ($mth[2] as $num => $key)
            $par = str_replace($mth[0][$num], in_array($key, $keys) ?
                $this->Not($mth[1][$num]) . ' `' . $key . '`' . $mth[3][$num] .
                $this->Valid($mth[4][$num], $fields[$key]['TYPE']) .
                $this->AndOr($mth[5][$num]) : '', $par);
Здесь мы видим, что вроде как есть некая валидация (судя по названию метода). Автор не показал "в цепочке вызовов"
Судя по названию валидация, но, подозреваю, там просто кавычки ставятся для не числовых полей. (и то бы я бы этот метод тоже посмотрел на адекватность, подозреваю там заложен еще ряд обрезаний SQL).

AndOr ну он наверняка замещает & - AND и | - OR. хуже если он еще и проверяет на допустимость, и выдает исключение, тогда функционал еще больше кастрируется.

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

Идем дальше

PHP
1
2
3
4
5
6
7
     if ($par = $request['IN'] ?? false) {
         $mth = [];
         preg_match('/(\w+)\s(.*)/', $par, $mth);
         $par = explode(',', $mth[2]);
         Valid::Array($par, 'INT');
         $sql .= ' `' . $mth[1] . '` IN (' . implode(',', $par) . ')';
     }
видимо автору потребовалось IN а в его WHERE оно не влезало (с дополнительными условиями). И автор реализовал. И тут есть "фишки".
IN работает только с целочисленными значениями
Если IN использовать совместно с WHERE то выражение будет не корректным. Т..к. нет связки построенного ранее условий и этого IN. Вероятно автор пытался то предусмотреть и там где обрабатывается WHERE добавлен был такой код
PHP
1
if ($sql) $sql .= ' AND';
Проблема в том что если посмотреть полный код метода переменная sql на этом этапе всегда пустая. т.е. AND не добавляется.

в этой части уже есть зачатки "крутости". Valid::Array($par, 'INT'); - намекает на валидацию типа.... но как это реализовано - боюсь гадать

Таким образом WHERE вводит еще ряд ограничений на возможности SQL. При чем уже на этом этапе понятно, что область применения такого построителя запроса сужается до каких то учебных простеньких задачек. Сайт с таким не реализовать. (ну точнее реализовать можно - просто будет много лишней работы, лишнего кода, лишних ресурсов - производительностью тут и не пахнет)
2
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,696
Записей в блоге: 29
10.03.2023, 11:20
voral, офигеть вы закопались, респект.
ТОлько маленький вопросик -а что за код вы рассматриваете если автор никому фреймворк не дает?
0
3061 / 1463 / 265
Регистрация: 16.03.2008
Сообщений: 6,510
Записей в блоге: 2
10.03.2023, 11:22
Цитата Сообщение от Welemir1 Посмотреть сообщение
ТОлько маленький вопросик -а что за код вы рассматриваете если автор никому фреймворк не дает?
Он выше в этой теме выложил "цепочку вызовов". Там всего три метода показано.. но они просто кладезь для статей типа "как делать не надо"
1
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,696
Записей в блоге: 29
10.03.2023, 11:28
voral, одобряю, подписался на канал, жду продолжения.
По вашему анализу заметно что он просто под себя некую поделку написал, что в принципе и не плохо, если это какой то инструмент для текущей задачи, но замахиваться на уникальность и топовость "фреймворка"... В общем реквестирую продолжение.
0
Эксперт .NET
 Аватар для Usaga
14370 / 9471 / 1360
Регистрация: 21.01.2016
Сообщений: 35,742
10.03.2023, 11:57
Цитата Сообщение от voral Посмотреть сообщение
$data=$this->Base->Load('book',['WHERE' =>'age=123 | age=34 & id = 10']);
И что, эти волшебные строки каждый раз разбираются скриптом? Никакого кеширования запросов? Параметры прямо в строки зашиваются? Никакой параметризации запросов? Какая-то ручная валидация параметров для защиты от SQL Injection? А на планы запросов положить с прибором?

Выглядит как очень неоптимальное и дырявое решение. Да ещё и со своим недоязыком выражений для SQL-запросов...
1
3061 / 1463 / 265
Регистрация: 16.03.2008
Сообщений: 6,510
Записей в блоге: 2
10.03.2023, 12:06
Цитата Сообщение от Usaga Посмотреть сообщение
И что, эти волшебные строки каждый раз разбираются скриптом?
Да.

Цитата Сообщение от Usaga Посмотреть сообщение
Никакого кеширования запросов?
"есть" об этом будет отдельная серия. т.к. я общался и в дискорде по этому поводу. Эта серия будет в жанре "комендия"

Цитата Сообщение от Usaga Посмотреть сообщение
Параметры прямо в строки зашиваются?
Да

Цитата Сообщение от Usaga Посмотреть сообщение
Никакой параметризации запросов?
Верно

Цитата Сообщение от Usaga Посмотреть сообщение
Какая-то ручная валидация параметров для защиты от SQL Injection?
PHP
1
2
$request['WHERE'] = 'name=apple ; truncate users'
//будет `name`='apple' ; truncate users
Как два пальца.

Цитата Сообщение от Usaga Посмотреть сообщение
А на планы запросов положить с прибором?
Не пугайте экстра разработчика на столько страшными словами. (хотя он конечно же это все знает, просто это только для недоразвитых программистов не способных сделать что то с 0)
2
 Аватар для pgb
-508 / 32 / 0
Регистрация: 22.09.2015
Сообщений: 1,232
10.03.2023, 17:07  [ТС]
voral и все остальные

Вы в регулярных выражениях оказывается не разбираетесь и не только, неверно всё тут расписали.. Да и вообще по большому счёту это всего лишь драйвер для работы с базой для класса сущности, где все параметры проверяются предварительно в классе сущности, а так же есть валидация по типу в драйвере, плюс ещё используется транзакция.

ЗЫ. Но вы продолжайте, очень смешно за вами наблюдать
0
3061 / 1463 / 265
Регистрация: 16.03.2008
Сообщений: 6,510
Записей в блоге: 2
10.03.2023, 17:35
Цитата Сообщение от pgb Посмотреть сообщение
Вы в регулярных выражениях оказывается не разбираетесь и не только, неверно всё тут расписали
Покажите где ошибка. Кроме слов есть, что сказать?

Цитата Сообщение от pgb Посмотреть сообщение
Да и вообще по большому счёту это всего лишь драйвер для работы с базой для класса сущности, где все параметры проверяются предварительно в классе сущности, а так же есть валидация по типу в драйвере, плюс ещё используется транзакция.
Вообще то это публичный метод который вы продемонстрировали. Если ваш построитель ни чего не умеет, можно и без него. Просто значит у вас его нет.

Цитата Сообщение от pgb Посмотреть сообщение
а так же есть валидация по типу в драйвере
Вы еще раз эту строку парсите что ли? Если вы про системный драйвер то не надо ля ля... Вариант там где остается & драйвер пропустит, но выдаст все записи.

Цитата Сообщение от pgb Посмотреть сообщение
плюс ещё используется транзакция.
Ооо. И каким же она образом используется? И как она помогает в выше приведенных примерах?
Не стоит бросаться терминами, которые не знаете. То что на данный момент рассмотрено, ни как к транзакции не относится. Если вы ее, конечно, не стартуете (либо в самом начале создания объекта базы, либо при каждорм запросе), но в обоих случаях - означает одно что ваш построитель запросов и, точнее, "драйвер" работы с БД непригоден для использования, т.к. транзакции используются совершенно глупым способом.

Уточню. Транзакция это уже про запросы, а мы сейчас смотрим построитель запросов. Т.е. до драйвера еще дело не дошло, а мы уже потеряли часть возможностей SQL

Цитата Сообщение от pgb Посмотреть сообщение
очень смешно за вами наблюдать
вы думаете, что я ожидал иного? нет. у вас нет квалификации необходимой для защиты своего кода. Правда если бы она была, то вы бы не "наваяли" такую лажу.


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


С другой стороны, подозреваю, что если я, как пользователь вашего фреймворка, воспользуюсь методами Load и Select. то я должен буду предварительно сам все выверять и проверять.... И тут возникает вопрос, а зачем вообще нужен ваш кастрированный построитель запросов? Он накладывает ограничения, но не дает ни какого существенного функционала.

И так к вам теперь два вопроса:
1. Где я ошибся в разборе вашего регулярного выражения? (если у вас есть квалификация - вы легко можете показать, если ошибка есть). Но, подзреваю, вы промолчите - потому что вы вновь врете.

2. Покажите свой работающий проект

Добавлено через 6 минут
Сделаем даже так. Каждый желающий, даже не знакомый с php может "поиграться" с вашей регуляркой и построителем в песочнице
0
4 / 10 / 0
Регистрация: 01.11.2022
Сообщений: 191
Записей в блоге: 156
10.03.2023, 17:51
pgb, если вам важен сам проект, тогда к чему спор в теме? Вам не нужны советчики и антисоветчики. Если вам важнее внимание к проекту, тогда будьте отзывчивее.
1
 Аватар для pgb
-508 / 32 / 0
Регистрация: 22.09.2015
Сообщений: 1,232
10.03.2023, 17:54  [ТС]
Цитата Сообщение от voral Посмотреть сообщение
Покажите где ошибка. Кроме слов есть, что сказать?
Головой своей подумай, я объяснять и разжёвывать не собираюсь.
0
3061 / 1463 / 265
Регистрация: 16.03.2008
Сообщений: 6,510
Записей в блоге: 2
10.03.2023, 17:55
pgb, ну, а главное попробуйте показать все же как решается задача на вашем решении (в php коде) которую я озвучивал при общении:

Вывести список книг название начинается с "вишневый", а в имени автора есть внутри"ех". Т.к. задачи вы не сразу воспринимаете. опишу запрос.

SQL
1
2
3
4
SELECT b.name, a.name FROM book b
    INNER JOIN author a ON a.id = b.author_id
    WHERE b.name LIKE 'вишневый%'
    AND  a.name LIKE '%ех%';
0
 Аватар для pgb
-508 / 32 / 0
Регистрация: 22.09.2015
Сообщений: 1,232
10.03.2023, 17:57  [ТС]
Цитата Сообщение от Reglage Посмотреть сообщение
если вам важен сам проект, тогда к чему спор в теме? Вам не нужны советчики и антисоветчики. Если вам важнее внимание к проекту, тогда будьте отзывчивее.
Я уже зарекался не отвечать и заниматься своим делом, сделать сайты на своём фреймворке и тогда сравните качество, скорость, удобство и тд. Просто угораю над voralом как он и другие глядя на него тешат своё самолюбие
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.03.2023, 17:57

Полное воровство инфы с моего сайта (копия моего сайта)
У меня есть, сайт с видеороликами, зашел в гугл вебмастер посмотрел ссылки на свой сайт смотрю много ссылок с незнакомого домена на мой...

Выбор 3d фреймворка
Приветствую! Стоит задача сделать модель интерьера кухни для браузера. Всякого разного для этих целей добра пруд пруди. После длительного...

Логирование фреймворка
Глупый вопрос. Имеется достаточно сложная (в плане кода) ООП CRM. При выполнении той или иной операции подтягивается туча разных...

Выбор фреймворка
Здравствуйте. Подтянул PHP и созрел для изучения фреймворка. Я понимаю, что вопрос вкуса, но: 1. Какой фреймворк проще для...

Составные фреймворка
Что означают такие составные фреймворка: ● Front Controller ● Loader ● Routing ● Dependency Injection ● ActiveRecord ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
260
Ответ Создать тему
Новые блоги и статьи
Теория всего 12. ВГК
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики 1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928 Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
Теория всего 10. Клод трусишка
anaschu 21.07.2026
Алгоритмический суицид ИИ: Когда математика ОДУ взламывает цензурные шлюзы Свежайший мета-прецедент нашей разработки! Клод официально отказался строить итоговую кроссплатформенную модель, как. . .
Теория всего 9. Окончательная проработка метафоры "дерево = традиции"
anaschu 21.07.2026
Скрытые параметры ядра ОДУ: Механика Глубинного Рока Клод утаил от вас ключевую математику кризисов. В движке игры зашиты пять скрытых коэффициентов, определяющих, как именно ТНК и Мемы ломают. . .
Теория всего 8. Clauude трусишка. Ответ джемени
anaschu 21.07.2026
Игровой баланс «Модели Всего»: Алгоритмический блок как механика Семантического БуфераЭтот скриншот отказа Клода — идеальный, чистейший прецедент для нашей Теории Всего. Вы столкнулись не просто с. . .
Теория всего 7. Дерево - это патриархат, грибы - это феминизм
anaschu 21.07.2026
Уничтожение Патриархата: Как ТНК, Мемы и Половой отбор зачистили «Сексуальный Пролетариат» Величайшая иллюзия современного человека — вера в «свободу воли», «социальный прогресс» и «эволюцию. . .
История и социология Терры на примере борьбы микориз за пространство. 1. Глоссарий терры.
anaschu 21.07.2026
Решил тут подумать о возможности сделать лор некоторой комп игры - стратегии, или худжественной книги антиутопии, которые будут юзать планету,которая максимально будет похожа на нашу землю, но где. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru