• Правильный ли подход к работе с ошибками и исключениями?

    SilenceOfWinter
    @SilenceOfWinter Куратор тега PHP
    та еще зажигалка...
    class HandlerManager
    {
        public function register()
        {
            set_exception_handler([$this, 'exception']);
            set_error_handler([$this, 'error']);
            register_shutdown_function([$this, 'shutdown']);
        }
        
        private function log($error, $code, $file, $line)
        {
            $error = sprintf('Error %s in file %s[%d]: %s', $code, $file, $line, $error);
            return error_log($error);
        }
        
        public function exception(\Throwable $e)
        {
            $this->log($e->getMessage(), $e->getCode(), $e->getFile(), $e->getLine());
            // clean the output buffer if one exists
            ob_get_level() && ob_clean();
            header('Content-Type: text/plain; charset=utf-8', true, 500);
            echo $e->getMessage();
            exit(1);
        }
        
        public function error($severity, $error, $file = '', $line = 0)
        {
            if (error_reporting() & $severity) {
                $this->log($error, $severity, $file, $line);
                throw new \ErrorException($error, $severity, $file, $line);
            }
            // dont execute the PHP error handler
            return true;
        }
    
        public function shutdown(array $shutdown_errors = [E_PARSE, E_ERROR, E_USER_ERROR])
        {
            $error = error_get_last();
            if ($error && in_array($error['type'], $shutdown_errors)) {
                // сlean the output buffer
                ob_get_level() && ob_clean();
                $this->log($error['message'], $error['type'], $error['file'], $error['line']);
                // shutdown now to avoid a "death loop"
                exit(1);
            }
        }
    }

    Вот простой пример класса с обработчиками. Под http ошибки 400-500 лучше завести отдельное исключение(а лучше для каждого кода) + базовое исключение приложения.
    Ответ написан
    Комментировать
  • Как интегрировать исполнение кода на сайте?

    jone21
    @jone21
    Кратко не получится
    пример выполнения кода на php, с остальными языками похожая ситуация
    $message=shell_exec('php -r "'.$_POST['inputMemo'].'"');
      print_r($message);


    также для других языков возможно будет сохранять в фаил а после воспроизводить и выводить ответ на экран
    команда shell_exec выполняет роль bash
    Ответ написан
    Комментировать
  • Как передать атрибут ссылки в модальное окно?

    KickeRocK
    @KickeRocK
    FrontFinish
    $("a").click(function(){
    $('form input[name="zakaz"]').val($(this).attr("data-zakaz"));
    })
    Ответ написан
    1 комментарий
  • Как с помощью SQL вывести запрос с 2 inner join?

    kimono
    @kimono
    Web developer
    Попробуйте как-то так:
    SELECT inf_courses.name, inf_statuses.name, count(*) cnt FROM act_courses
    LEFT JOIN inf_courses ON act_courses.course_id = inf_courses.id
    LEFT JOIN inf_statuses ON act_courses.status_id = inf_statuses.id
    GROUP BY act_courses.course_id, act_courses.status_id -- для группировки по курсу и статусу
    -- либо GROUP BY act_courses.course_id для группировки только по курсу
    Ответ написан
    2 комментария