Обновить
3
0

Пользователь технологий

Отправить сообщение
Кому знать? Компилятору его как раз обязательно для вывода.

Разработчику.
Имел ввиду, что полностью строго типизированную систему либо невозможно сделать, либо очень сложно. Да и не нужна она, строгость типов это еще один инструмент решения задач. Иногда он нужен иногда нет
auto позволяет его не писать, только и всего.

Давайте поясню что имел ввиду. Это грубый аналог
$n = 41 + 1;

Олсо, интересно, что бы вы сказали, глядя на какой-нибудь код на хаскеле или чём позабористее, учитывая, что там аннотации типов зачастую только у объявлений топ-левел-функций

Думаю я бы сломал себе мозг. Из функциональных только lisp (clojure) трогал и то не дальше учебника.
И какое отношение это имеет к строгости типов?

Заранее можно не знать тип данных. Могу ошибаться, на плюсах писал только курсовые когда учился.
Почему? Функция, которая непосредственно отправляет данные базе данных, должна про это знать. Точно так же, как она должна знать, как сериализовать эти данные, и так далее

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

Если санитизация идемпотентна, то ничего

Хорошо

Да.

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

Только ошибки в этих абстракциях ловит компилятор

Как и тайп-хинтинг с интерфейсами.

Во-вторых, ой, расскажите, пожалуйста, как же auto меняет дело? :]

Можно не указывать тип :]

Наверное, вы очень хороший дизайнер. Когда какое-нибудь место, где я буду работать, будет искать людей, я вас первым делом зареферю

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

Прочитал какие-то книги и не пишу код, где ничего не понятно. Лично мне книги приносят знания, которые я не знал или помогают их структурировать. И книги это не инструкция к применению.
Зачем ему это не знать?

Как раз ему и не надо знать это.

Упрощая, функции, принимающие ввод от пользователя (будь то CLI, фронтенд или ещё что), дают вам обычный сырой невалидированный тип строки String...

Записали в базу Sanitized, потом выводим в html еще раз Sanitized, что произодет с данными? Если нам надо обработать сырые данные для другой задачи, а они уже Sanitized, тогда что делать, преобразовывать обратно? Это все добавляет сложности — теже абстракции только в профиль.
К тому же, одними строгими типами проблема не решается. Если бы это решалось, в C# не добавляли бы var и auto в плюсах.
Автор поста пытается донести мысль, что данные считаем недоверенными всегда, кроме случая, когда нам это надо, и вот тут санитайзер как раз нужен будет. Другими словами «Запрещено все, кроме того что явно разрешено».

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

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

Все придумано до нас — консоль субд.
Давайте немного по-фантазируем:
Начитавшийсь умных книг мы строим архитектуру приложения похожую на DDD. При такой архитектуре у нас получается довольно много абстракций и сервисов. Это всё между собой слабо связано, разделение по слоям, напрвяления зависимостей и все как завещал Дядюшка Боб. В таком случае некоторый сервис может просто не понимать откуда у него на входе данные. Это тестовые данные, это из БД, это из cli или черт еще знает откуда. Связанность слабая и код также «не знает» очищены они или нет. Даже если и будет некоторый флаг отмечающий это, как определить что он установлен верно?
Примеры с БД выше и ниже уже привели. Как отличить одно от другого? А если админ ошибся или опчетался, то это инфа сохранится в БД и может что-то сломать, а она ведь не «пользовательского ввода»
Новые бампера это fn =>, можно обойтись и без них. А если что-то чуть серьезней — аналог отзывной компании
Я писал не про ловкое создание форков
Вот мы и пришли от обобщенного к частному. Вы не будете обновлять, я буду. Возможно вам этого и не надо, а вот, возьмем, Васю, у него бизнес ему и надо, он зовет опытного разраба, допустим Вовку, и тот ему говорит "- Да давай ща версию откатим и сойдет!".
Давайте смоделируем ситуацию

Уже писал об этом. Я слежу за ситуацией, и буду вносить изменения по необходимости, чтобы мой сайт работал. Мне нравится писать код, может быть от этого зависит.

Автомобиль находится в первой группе.
Старые веб-сайты могут попасть во вторую

Соглашусь.

Кстати, вспомнил один момент, был к композере пакет у которого была совместимость с php7.2 и с 8.1, и он зависит от пакета с 8.1. При этом код написан под 8 версию и есть полифилы. Все приплыли, он как бы совместим со старой версией, но не установится. Если сделать форк и указать совместимость с 7.2, то можно ставить.

У медали две стороны
В современном php как правило не принято. Однако есть рудименты в виде Wordpress, Joomla, modx и прочего, куда это вотнуть трудно (где-то лечге, где-то сложнее). Все кто пишет на Laravel, Symfony и др. фреймах, там уже есть шаблонизаторы и их наличие не оспаривается
У людей есть много других дел, кроме как соответствовать ожиданиям разработчиков PHP

Повторюсь, нет смысла бежать сломя голову вносить изменения сразу как только они анонсируются. Можно делать медленно, и они не требуют много времени.
Это очень здорово, что у Вас много свободного времени, которое можно потратить на такое непродуктивное занятие как ремонт того что и так работает

Не стоит говорить про то, в чем не уверены. У меня не так много времени, просто я заложил его в обновление и поддержку. Если требуется ремнот — это уже не работает, а обслуживание проивоздим регулярно.
Интересно, а вы машину или мотоцикл или сервер или еще что-то тоже обслуживаете также, когда окончательно сломается?
Как показывает реальность, полная сообщений об ошибках на сайтах — у мире много людей, находящих более интересные занятия.
Или также как и вы решают «работает — не трожь»? Не все могут себе позволить либо время, либо деньги, либо и то и то на обслуживание. Это не значит, что этого делать не надо. Изначальный вопрос-то вообще в другом, что некоторые не хотят изучать новое.
Если делать все своеверенно, то проблем не составит. Wordpress потихньку переползает на новые заморочки и разработчики тем и плагинов тоже.
все бросились переделывать старые сайты под новые заморочки авторов PHP

Я бросился. А также переписал внутрениие сервисы с silex на sf4, когда это стало актуально
К сожалению соглашусь. Сейчас есть пара новичков, которых пытаюсь чему-то научить, идет со скрипом. Стараюсь объяснять что и зачем, а не тупое заучивание.
Видел ситуацию и наоборот, когда попсовую технологию тащать везде, где можно и где нельзя без включения головы. Результат тоже плохой, только «с другой стороны»
А причем тут PHP?

Контекст?
add
«Мы никогда не доверяем пользовательскому вводу»

Где границы пользовательского ввода? Вы этими словами повторяете ошибки Академии
Отчасти это объяснимо — РНР считается таким простачком, и каждый считает себя экспертом в этом языке

Рискну предположить, что на этом всё и базируется. "- Я с третьей версии пишу, я все знаю, не надо меня учить"

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность