Могу подтвердить, что к примеру решарпер такое умеет. Притом на его предложение где-то изменить на "красиво" имеет опцию от "в текущем файле" до "во всем решении"
Alexander, этот случай гораздо проще -)
Клиент, даже в более развитом варианте - это собственно нечто с заполненными либо данными характерными для юрика, либо физика, либо ИП
То бишь например ИНН - он для всех, а вот ОГРН - скорее для юрика (у физика - null)
То бишь в абстрактном классе существуют общие для любых типов поля, в наследниках трех типов - дополнительные поля, характерные для физика, юрика и ип, а в базе - все поля, включая указание типа.
В итоге - при чтении из базы тип однозначно идентифицирует что за наследник должен быть создан. И обратно - в зависимости от объекта - в базу пишутся нужные поля.
При желании можно допустить и "без типа" и писать самый минимум (некоторые CRM системы подобное реализуют в виде самого верхнего уровня воронки - только имя, которое потом может превратится в контрагента, который физлицо, но является представителем контрагента-юрлица).
например open на уровне ОС - реализует return state, а вот где-нить внутрях драйвера диска которому скормится геометрия с 0 головок - сгенерит divide overflow
Так что все зависит от требований предпочтений:
- можно возвращать функцией/методом результат с кодом успеха/неуспеха
- можно возвращать флаг успеха/неуспеха и заполнять поле с кодом/описанием проблемы
- можно рэйсить наверх с нужным уровнем детализации
Impeeeery, по первым строкам видно, что автор исходников использует throw для различных видов сигнализации и поэтому надо не гадать а читать что именно выбрасывается
15432, или это уже в библиотеке ветвится. К примеру во времена 8086 - не на каждом компьютере был 8087 и math так или иначе была обязана либо быстро считать на сопроцессоре либо "в столбик"гоняя регистры
Danil Sapegin, даже в не очень оптимальном варианте отбор и отсечение join'ами не затронет такие медленные каналы как например отдачу еще не отфильтрованной выборки.
В приведенном ТС вопросе - это максимально выпячено, так как конечный ответ атомарный - да/нет и любые варианты получения нескольких выборок по 100500 строк с последующими манипуляциями над ними - захлебнуться еще на уровне их отдачи...
Ближайшая аналогия - не отдавать мобильному клиенту ужатую до 300*200 пикселей картинку, а отдать 38 мегапиксельную картинку и обрамить ее тэгами "показать 300*200" -)
В описанном ТС случае нужен единственный бинарный ответ - так нехай sql перемолотит простенький запрос и вернет тот самый битовый ответ, а не гоняет туда-обратно море шелухи.
И авторизация - тут вообще не к месту. Ибо тут всего лишь ответ да/нет на пару userId и postId
NataliaCh, ну пользователей домена или группы можно примаппить к учеткам (внутренним).
Оба варианта имеют право на жизнь, но как мне кажется не зря дефолтный вариант установки sql сервера предлагается с win авторизацией
NataliaCh, ну можно попробовать mixed авторизацию и попробовать подключиться учеткой sql сервера
Ну и четко убедиться, что php выражении $var = "server\user" одиночный обратный слэш не выполняет специальных функций экранирования спецсимволов. То бишь вывести на консоль или в файл содержимое переменных
ибо "результат 1 запроса, потом результат второго, потом результат первого и так далее." содержит в себе взаимоисключающие мысли...
результат первого запроса - это множество строк, результат второго запроса - другое множество строк -)
А если хочется сделать этакие пересекающие расчески - ну можно конечно, но для начала надо будет определиться с порядком отбора каждого из запросов, а потом поиграться с ражированием и использовать ранжирование как ордеринг результата объединения =)