Nano Hash - криптовалюты, майнинг, программирование

расширяет несколько системных классов codeigniter

Я хочу обработать ошибку в codeigniter, поэтому мне нужно расширить как класс «CI_Controller», так и «CI_Exceptions», чтобы реализовать его. что-то вроде ниже. возможно ли глобально обрабатывать ошибки в хуках или другим способом для всей системы?

class Language extends CI_Controller , CI_Exceptions{

    public function __construct()
    {
        parent::__construct();
        parent::CI_Exceptions();

    }
}
09.04.2015

  • Поскольку PHP не поддерживает расширение нескольких классов, CI_Controller может расширять CI_Exceptions, тогда язык может расширять CI_Controller. 09.04.2015

Ответы:


1

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

Крючок

$hook['pre_controller'][] = array(
                       'class'    => 'ExceptionHook',
                       'function' => 'SetExceptionHandler',
                       'filename' => 'ExceptionHook.php',
                       'filepath' => 'hooks'
                      );

Класс исключений

class MY_Exceptions extends CI_Exceptions {

    public function __construct()
    {

        parent::CI_Exceptions();
    }

        public function show_php_error($severity, $message, $filepath, $line)
        {   
        $severity = ( ! isset($this->levels[$severity])) ? $severity : $this->levels[$severity];
        $filepath = str_replace("\\", "/", $filepath);

        // For safety reasons we do not show the full file path
        if (FALSE !== strpos($filepath, '/'))
        {
                $x = explode('/', $filepath);
            $filepath = $x[count($x)-2].'/'.end($x);
        }

        if (ob_get_level() > $this->ob_level + 1)
        {
            ob_end_flush(); 
        }
        ob_start();
        include(APPPATH.'errors/error_php'.EXT);
        $buffer = ob_get_contents();
        ob_end_clean();

        $msg = 'Severity: '.$severity.'  --> '.$message. ' '.$filepath.' '.$line;

            log_message('error', $msg , TRUE);

        mail('[email protected]', 'An Error Occurred', $msg, 'From: [email protected]');  

        }

    }
09.04.2015
  • Для CI v2+ должно быть parent::__parent();. 09.04.2015
  • Новые материалы

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

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..