Задать вопрос
  • Обязательно ли учить PHP для сайта?

    Moskus
    @Moskus
    Определитесь, в чем ваш конечный вопрос.
    Если это "можно ли написать back end не на PHP?", то ответ - "безусловно, можно".
    Если это "на сколько плох PHP относительно других языков для этой задачи?", то ответ - "для вас - без разницы".
    Если это "можно ли вообще не уметь программировать и сделать сайт?", то ответ - "можно, используя конструкторы, только он будет весьма типовым и шаблонным".
    Если это "проще ли вам, не умея программировать, будет научиться это делать на других языках вместо PHP?", то ответ - "нет, не будет проще".

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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Не бывает никакого "непрямого" доступа к обработчикам форм. Доступ всегда прямой.
    Не бывает никаких отдельных специальных обработчиков форм. Твой обработчик - это обычный пхп скрипт, такой же как все остальные. И защищать его надо не больше и не меньше, чем остальные скрипты.

    Поэтому надо выкинуть эти фантазии из головы и заняться чем-нибудь полезным.
    Ответ написан
    13 комментариев
  • К чему может быть эта ошибка?

    egor_nullptr
    @egor_nullptr
    К чему может быть эта ошибка?

    К отладке.
    Ответ написан
    8 комментариев
  • Как решить данную задачу корректно?

    iiifx
    @iiifx
    PHP, OOP, SOLID, Yii2, Composer, PHPStorm
    Это же обычное поведение браузера: когда нажимаете F5 он повторяет запрос включая данные, которые были отправлены. То есть ваш POST запрос повторяется при обновлении. Вам unset($_POST['received_image']) делать не нужно, просто при успешном завершении сделайте редирект на эту же страницу или на начальную, чтобы сменить тип запроса с POST на GET.
    Ответ написан
    2 комментария
  • При какой посещаемости сайта веб-сервер может сбоить?

    Zoominger
    @Zoominger Куратор тега Системное администрирование
    System Integrator
    Ну а в случае с VPS хостингом, сколько запросов может обрабатывать БД в секунду, и от чего это зависит?

    От 1 до 1 000 000.
    Вы же не указали, что за VPS.
    И зависит от мощностей VPS, да.

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

    Stalker_RED
    @Stalker_RED
    Выбросить это все, использовать обычный require_once.
    А на случай ошибок подключить обработчиик:
    https://www.php.net/manual/ru/book.errorfunc.php

    Или вообще переделать все на авттозагрузку.
    https://www.php-fig.org/psr/psr-4/
    Ответ написан
    Комментировать
  • Плохая ли практика, создавать объект, который не требует зависимостей без скобочек?

    Sanasol
    @Sanasol Куратор тега PHP
    нельзя просто так взять и загуглить ошибку
    https://github.com/php-fig/fig-standards/blob/mast...

    Сейчас на рассмотрении PSR-12 в котором как раз прописано что скобочки нужны всегда.

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

    mad_maximus
    @mad_maximus
    Чтобы вызывать методы по цепочке, вам нужно вернуть из метода $this, если метод находится внутри данного класса, или вернуть какой-нибудь объект (например, return new SortClass()).

    public function getAll()
    {
       // code
       return new ArrayCollection($posts);
    }
    
    ...
    
    class ArrayCollection
    {
        private $collection;
        
        public function __construct($collection)
        {
             $this->collection = $collection;
        }
       
        public function sortByName()
        {
            return array_filter($this->collection, function(){});
        }
    }


    Как-то так.
    Ответ написан
    1 комментарий
  • Как получить число первого вторника текущего месяца?

    usdglander
    @usdglander Куратор тега PHP
    Yipee-ki-yay
    echo date('d.m.Y', strtotime("first tuesday of this month"));

    Хотя кошернее:
    echo (new \DateTime("first tuesday of this month"))->format('Y-m-d');
    Ответ написан
    4 комментария
  • Насколько серьезными могут быть последствия повышенного напряжения в сети?

    Jump
    @Jump
    Системный администратор со стажем.
    Насколько серьезными могут быть последствия повышенного напряжения в сети?
    Да никаких как правило последствий нет в большинстве случаев. Хотя могут быть и исключения.
    Потому что в разных странах рабочее напряжение отличается - в основном 220 или 230вольт +-10%
    Например в России сейчас 230В норма.
    Бывает и 240
    И большинство приборов рассчитано на довольно широкий диапазон - от 180 до 260В.

    Есть страны где совсем другая схема питания, и там уже напряжение 110-120Вольт там уже выпускаются другие приборы, или ставят переключатель на другое напряжение.

    Насколько серьезными могут быть последствия работы электроники в таких условиях?
    Для электроники такие отклонения не критичны. Лампочка будет светить ярче, но вероятность перегорания низкая.

    может заряжаться в несколько раз дольше, но зарядится лишь на 50%
    На время зарядки это никак не влияет.

    То что вы намеряли мультиметром это одно - другое дело что в сети могут быть кратковременные скачки до гораздо большего напряжения, и тут уже будут и лампочки перегорать и электроника.

    Стоит ли тратить время и требовать устранить проблему у поставщика электроэнергии?
    На ваше усмотрение.
    Такая фигня творится когда линия слабая - и реагирует на включение, отклчение нагрузки большими скачками.
    Чтобы исправить нужны большие капитальные вложения.
    Поэтому в большинстве случаев электрики просто пошлют подальше такого требовательного клиента.
    Типа не устраивает качество - ищите другого поставщика, или дайте денег на ремонт подстанции, и прокладку дополнительного кабеля.
    Ответ написан
    3 комментария
  • Http build query attach a file?

    Комментировать
  • Сколько стоит час веб-разработчика-фрилансера?

    @deliro
    Ты веcь такой кругом молодец, то знаешь, это знаешь. А теперь представь себе среднестатистический проект, который должен приносить бизнесу деньги. За две недели работы ты едва напишешь хлипкий CRUD для данных, неправильно смаппив бизнес-сущности в объекты ORM, ещё через месяц натянешь какой-то слайдер на jQ, попутно захватив 2мб JS кривых библиотек, а через два заказчик поставит тебе плохую оценку, потому что твой ценник он оплатил не за то, что ему нужно, а потому что ты знаешь монады, которые ему даром не сдались.

    А теперь давай представим простого программиста. Из алгоритмов он с трудом вспоминает сортировку пузырьком, а двусвязный список — предел его знаний о структурах данных, и даже этим списком он пользовался два раза в жизни. Хаскель он никогда не видел в глаза, C++ учил только в школе, вместо этого пишет неэффективный код на PHP. И у него есть опыт. За день он распишет сущности, за второй сделает универсальный CRUD, на третий день поднимет фронт на React'е с SSR. Да, внутренности проекта будут "медленными". Вместо O(logN) что-то будет выполняться за O(N) или даже O(N^2), но всем похер. Пока всё работает на приемлемом уровне — бизнес радуется.

    Кстати, к чему эта поучительная лапша? Я хотел сказать, что всеми этими модными словами можно пугать друзей и преподавателей, но в реальной жизни все алгоритмы уже реализованы, все типы данных уже подобраны оптимально. Знать их полезно для себя (чтобы мозг не атрофировался), но не для работы. Для работы тебе нужны такие навыки как:

    * Оптимальный баланс между говнокодом и идеальным кодом
    * Оптимальный баланс между скоростью разработки и оптимизацией кода
    * Оптимальный баланс между поддерживаемым кодом и костылями
    * Умение использовать те инструменты, с которыми ты работаешь. Опять же, для того, чтобы писать быстро, при этом имея минимальное количество говнокода и обеспечивая максимальную поддерживаемость (в пределах сроков). Например, можешь выкинуть в помойку свой Vim, как бы круто ты себя не чувствовал, разрабатывая в консольном редакторе, если продукты от JetBrains позволят за это же время сделать что-то лучше или чего-то больше
    * Чувство "знаю больше менеджеров". Это то чувство, когда тебе кажется, что "вот эта фича скоро изменится" и надо сделать архитектуру заранее более гибкой. Или "вот эту фичу мы через месяц выпилим" и не надо тратить на неё силы — напиши костыль и через месяц с чистой совестью удали его
    * Знания, как сделать ту или иную фичу. Потому что фичи повторяются (немного видоизменяясь) от проекта к проекту. И если ты сделал что-то за два дня, в следующий раз ты похожее сделаешь за три часа

    Что касается инструментов, выбери любой полноценный фреймворк, который умеет решать 90%+ потребностей "из коробки": Symfony, Django, Laravel

    Всякие "минималистичные" поделия вроде Falcon, Flask (в PHP не знаю, я на питоне пишу) оставь хипстерам. Пусть они говорят: "Мой фалкон такой быстрый, он написан на Cython". Тебя это не должно волновать, потому что бизнес с твоей скоростью разработки уже заработал достаточно денег, чтобы купить ещё десять серверов, пока фалконисты неделю гуглили, как прикрутить миграциии и запустить юнит-тесты на VPSке за пять баксов.
    Ответ написан
    5 комментариев
  • Чем плохо написание кода функциями?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Зачем нужен ООП?
    Кратко зачем ооп вместо функций:
    1) Снижение сложности кода(да, звучит странно, но на самом деле именно так и есть - сложные вещи пишутся 1 раз, а далее вы пользуетесь практически предложениями естественного языка и описываем реально существующие манипуляции с реальными объектами, например $user->getName(), $image->rotateLeft()...)
    2) Инкапсуляция - все что делает объект изолированно внутри одного инстанса, вы работаете по сути с отображением реальных объектов в цифровой мир(+ этот объект может быть сколь угодно сложным внутри, наружу он смотрит простыми методами для возможности операций над ним).
    3) Снижение затрат памяти - классы подгружаются только в необходимом объеме и в нужно месте, в процедурном подходе все функции грузятся сразу.
    4) Локализация кода - всегда логика одной сущности доступна в одном месте, не размазана по функциям и коду. Это такой нехилый бонус к инкапсуляции, и при рефакторинге вам не надо переписывать кучу кода, если объект был изначально правильно построен, максимум поменять немного логику внутренней обработки данных.

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

    Я понимаю что это плохо и не правильно, но оно работает, хотел бы попросить у Вас совета, насколько это плохо, и можно ли использовать данный подход?
    Почему нельзя?
    Оно работает?
    Оно решает проблему бизнеса на сейчас?
    Бизнес устраивает решение которое "будет работать только здесь и сейчас, а стоимость погашения технического долга и расширения будет равна написанию приложения с нуля, но это будет потом"?
    Если все ответы - "да" значит все не так уж плохо на сегодняшний день, и билет на само в порядке, по крайней мере пока вы работаете там.
    Но я бы серьезно задумался о будущем в плане развития.
    Ответ написан
    Комментировать
  • Каким инструментом найти обработчик горячей клавиши в Ubuntu?

    wegres
    @wegres
    Ещё есть Tweaks, если установить, в ней есть Keyboard&Mouse, может быть там найдётся.
    Ответ написан
    2 комментария
  • Зачем нужно добавлять модификатор static для константы?

    zagayevskiy
    @zagayevskiy Куратор тега Java
    Android developer at Yandex
    Статические члены существуют в одном экземпляре на всю программу. Зачем тебе отдельный пи на каждый твой объект?
    Ответ написан
    3 комментария
  • Что мешает мне загрузить картинку?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    логи, первым делом логи
    так как опыта у вас мало - включите вывод ошибок в браузер
    ini_set('error_reporting', E_ALL);
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);

    для работы с файлами на сервере ВСЕГДА используются полные пути до папок, от корня сервера.
    Ответ написан
    1 комментарий