Задать вопрос
  • Как работодатели в Москве относятся к отсутствию военного билета?

    @Vitsliputsli
    Василий Банников, да, конечно, не обязательно военный билет, его может и не быть, а документ воинского учета. Суть дела это не меняет, о ведении воинского учета организация должна отчитываться перед военкоматом. Т.е. если ваша организация оповестила военкомат, а он вас не отловил не отправил служить, хотя должен был, это его проблема. Если не оповестила, то это нарушение со стороны организации. Это примерное положение дел в соответствии с законом, но я не кадровик и не специалист в вопросе организации этого вопроса.
  • Как работодатели в Москве относятся к отсутствию военного билета?

    @Vitsliputsli
    Василий Банников, это нарушение закона, таких кадравиков-пофигистов и компанию будут "любить" на проверке. За такое предусмотрены штрафы и дисквалификация по КоАП, как для кадровиков, так и для компании. Разгильдяйства, пока гром не грянул, везде хватает, люди просто не знают, чем это грозит и рассчитывают, что их это минует.

    bondle, по закону, если вас принимают на работу, а вы заявляете, что у вас нет военного билета, работадатель обязан "настучать" о вас в комиссариат.
  • Как записать в базу ссылку?

    @Vitsliputsli
    Добавлю еще, что все манипуляции с экранированием, не решают проблем, как просто работа с данными, так и защита от sql-инъекций. Такое позволит вам сделать только подготовленный запрос, специальный механизм разделения данных и запросов на стороне СУБД.
  • Как найти все дубликаты в многомерном массиве?

    @Vitsliputsli
    Kristina8787, если людей миллиард, то в любом случае это будет небыстрая операция, волшебства не будет, мгновенно как нибудь само такое не посчитается. Есть и другие варианты, например разбить на отдельные проверки, например при добавлении нового телефона, но это зависит от задачи, архитектуры, т.е. неизвестных из вопроса факторов.
  • Как найти все дубликаты в многомерном массиве?

    @Vitsliputsli
    Kristina8787, в самом простом случае, сделайте новый массив и в нем посчитайте кол-во повторений каждого телефона, потребуется 1 проход по основному массиву.
    Раз записей много, вероятно вы их храните в БД, соответственно задачу можно выполнить на стороне СУБД.
  • Как составить запрос на SQL?

    @Vitsliputsli
    Продолжая мысль, на MySQL:
    select
                name_sort
    	from table
    	group by name_sort
    	having max(years)<>year(curdate())

    Под table понимается таблица из примера, не разбирался как ее получили.
  • Как сгруппировать данные запроса на основе внешних данных?

    @Vitsliputsli
    Алексей Николаев,
    Там никогда не используется реальное ID, потому что ID зависит от контекста использования (какая интеграция и с каким сервисом)

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

    И поверьте, этот хардкод будет одной из наименьших проблем в проекте - мы даже не знаем, с чего начинать рефакторинг, а надо и фичи пилить )

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

    @Vitsliputsli
    delongeroman,
    в таблице заказчик будет id заказчика и через цикл перебором он будет искать этот же id в другой таблице и подставлять значения при совпадении, либо сделать связь через внешний ключ

    Через внешний ключ. Целостность БД должна контролировать СУБД, т.е. все по классической работе.
    Отказ от внешних ключей и перенесение контроля целостности в app возможен только тогда, когда вы понимаете что делаете и зачем. Раз задаете здесь вопрос, то это точно не ваш вариант.
  • Как правильно юзать уже заполненное статичное свойство?

    @Vitsliputsli
    App это разновидность Error?

    именно так, он также используется для реализации интерфейса Throwable

    У вас App базовый класс в точке входа, он устанавливает коннект к БД, причем здесь Error?! Вопрос не в том, как вы его используете, а зачем вы так его используете. Принцип single responsibility запрещает подобное надругательство, как смешение всего в одном.
    Зачем передавать объект Error в конструктор? Ошибки генерируются путем выбрасывания Exception и соответствующий объект Throwable будет сгенерирован в месте выбрасывания. Что это за божественный класс Error, что вы хотите везде его всунуть?

    любой голый фреймворк генерит у меня страницу примерно 0.1 сек, у меня авторизованный скрипт с примерно около десятка запросов генерит страницу за 0.005, да мне и не нужен фв на 50 мегабайт, у меня скрипт весь с графикой около 5-ти мег

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

    @Vitsliputsli
    Иван Иванов, как уже написали:
    class App extends Error - На человеческий переводится как мой App сплошной Error.

    Если App наследует класс Error, значит App это разновидность Error. Ваше приложение разновидность ошибки? Причем здесь конструктор и что за класс AppException? Наследование подразумевает родство классов, а не просто объединение произвольных кусков кода. Только так, иначе код превратится в бессвязную мешанину.

    установил бы какой-либо из популярных фреймворков
    тяжёлые, про фалкон читал, но не вникал сильно

    Тяжелые, потому что так говорят? Или у вас highload решение и вы боретесь за доли секунды?
  • Как исправить ошибку 403 при подключении к WebSocket?

    @Vitsliputsli
    И к тому же, ws - это нешифрованное соединение, для шифрованного используется протокол wss.
  • Как определить что сервер именно локальный?

    @Vitsliputsli
    PHP_OS (string) - Операционная система, под которую собирался PHP.

    Когда собирается и компилируется код, это делается под определенную ОС, т.к. исполняемый код будет разный на разных системах.

    Вот у меня OSPanel стоит, мне подойдёт, если я эту константу заюзаю?

    Подойдет для определения ОС, под которую собирался php. Для задачи, которую вы решаете - нет, не подойдет. Да, это будет работать при условии, что разные ОС на проде и деве, но используемая ОС не имеет никакой связи с окружением, и по ней нельзя определять прод это, или дев, или тест. Подобный подход создает неявное поведение, что в конечном итоге закончится большими проблемами, когда вы меняете одно, а это вызывает изменение несвязанных параметров, и все рухнет как карточный домик.
  • Как определить что сервер именно локальный?

    @Vitsliputsli
    Иван Иванов, есть же нормальный ответ, сделайте переменную окружения и в ней храните тип окружения. Неполучается использовать переменные окружения, сделайте переменную в конфигурации проекта.
    Вариант DIRECTORY_SEPARATOR даже комментировать не буду.
    REMOTE_ADDR === '127.0.0.1' тоже самое, нельзя использовать для определения чего-то, переменные это не определяющие, иначе все будет печально.
  • Где расположить шаблоны модуля что ли?

    @Vitsliputsli
    Иван Иванов, mvc - это разделение логики на контроллеры, представления и модели, а не хранение файликов в определенных каталогах.
    Т.е. если у вас проект выглядит так:
    project/IndexController
    project/IndexView
    project/IndexModel
    project2/IndexController
    project2/IndexView
    project2/IndexModel
    это нисколько не нарушает MVC (при условии что это не просто названия файлов, а там действительно есть деление на модели, контроллеры и представления). Не удобно будет работать, когда кодовая база будет расти - да, но не нарушает mvc.
  • Где расположить шаблоны модуля что ли?

    @Vitsliputsli
    Иван Иванов, как написал FanatPHP это не такой строгий или принципиальный вопрос. Просто когда проект большой необходимо его дробить на более мелкие куски, чтобы не потерять контроль. Если модуль слабо связан с остальным кодом, то логично его положить отдельно от всего остального, чтобы не обращать на него внимания, когда не работаешь с ним. Поддиректорий в controllers может много и просто для логической группировки, поэтому я и предложил положить совсем отдельно. По-большому счету с опытом придет понимание, как удобнее, главное чтобы это было удобно не только для вас, но и для любого другого.
  • Как создать таблицу с двумя колонками обязательно разного значения?

    @Vitsliputsli
    Либо триггер в более ранних версиях. Либо не на стороне СУБД.
  • В чем разница между dependency injection и методом, который возвращает тип класса?

    @Vitsliputsli
    Roman Kitaev, именно так. Но согласитесь, это совсем не то, что происходит в том же самом js. Т.е. есть языки без типизации (крайний случай слабой типизации, ее отсутствие), например ассемблер, где, например, есть байт, который не имеет никакого отношения ни к char, ни к int, это просто байт. Есть слаботипизированные языки, например Си, где мы можем создать char, положить туда '1', а потом обратиться к нему как к int и получить 49 (индекс символа '1' в ASCII). Собственно об этом вы и написали. Но совсем иное в языках с динамической типизацией, там нет такого вольного обращения с типами, int всегда int, string всегда string. Да, когда вы в js напишите '1' + 5, то получите '15', но не потому что типизация слабая, а потому что int 5 будет переведен в string по правилам языка и будет выполнена конкатенация строк. Я не вижу здесь никакой слабой типизации, все типы четко выражены, и вы не сможете так вольно обращаться с данными как в Си. Я так понимаю, что из-за безграмотного перевода сильную типизацию называют строгой и зачем-то примешивают сюда строгое сравнение, как например в php, сравнение без приведения типов. Но типизация и сравнение с преобразованием типов или без, это совсем разные вещи.
  • В чем разница между dependency injection и методом, который возвращает тип класса?

    @Vitsliputsli
    Roman Kitaev, т.е. по такой логике, слаботипизированный Си, при "1" + 5 получит результат похожий как в JS?
  • Как оптимизировать запрос для большого объёма данных?

    @Vitsliputsli
    А что вы хотите делать циклом?
    Вообще для оптимизации нужно как минимум видеть план.
    Но если наугад - то очень сомневаюсь, что все подзапросы возвращать по 10 строк, а значит используйте join.
  • Как сделать вывод из базы данных используя PDO?

    @Vitsliputsli
    "почему-то не выходит", как и "ничего не работает" - очень не информативно.
    При описании ошибки пишут: что делали, что получили, что ожидали получить.

    Как минимум, посмотрите что у вас в $data с помощью var_dump, и должно стать понятно в чем проблема.