Обработка исключений в CodeIgniter

В последнее время я изучаю PHP с помощью CodeIgniter Framework. Я работаю над обработкой исключений, но одна вещь удивила меня тем, что обработка исключений не работает с ошибкой базы данных, когда в database.php есть db_debug = TRUE .

Если db_debug = FALSE , я могу бросить и поймать ошибку, но когда это TRUE , он отображает страницу с ошибкой базы данных.

Вот мой код:

В Model :

    $this->db->insert('tbl_name',$data);
    if (strpos($this->db->_error_message(),'constraint_name') !== FALSE)
    {
        throw new UniqueConstraintException($this->db->_error_message());//UniqueConstraintException is customized excpetion
    }

В Controller :

        try
        {
             //calling the method from model having above code
        }
        catch(UniqueConstraintException $ex)
        {
              echo "There is already item with same item name";
        }
        catch(Exception $ex)
        {
             echo $ex->getMessage();
        }

Могу ли я реализовать обработку исключений при ошибке базы данных, даже если существует параметр db_debug = TRUE ?

3
nl ja de

1 ответы

Ребята CodeIgniter ничего не знают о oop. Когда вы просматриваете код, вы найдете такие вещи миллион раз в драйвере DB (ничего не знаете о DRY):

if () {
    if ($this->db_debug) {
        log_message('error', 'Invalid query: '.$sql);
        return $this->display_error('db_invalid_query');
    }
    return FALSE;
}

Так что нет, вы не можете отключить эту «функцию». Однако вы могли расширить класс CI_DB_driver, чтобы избавиться от этой проблемы, но из-за отсутствия СУХОГО кода вам придется переопределить почти все из этого класса ...

9
добавлено
phpGeeks
phpGeeks
3 620 участник(ов)

Best PHP chat Еще: @dbGeeks - базы данных @phpGeeksJunior - новичкам @moscowProgers - IT Москва @ebanoePhp - весёлый канал о PHP @laravel_pro - Laravel @jobGeeks - вакансии @jsChat - JS Правила: https://t.me/phpGeeks/764859 ДР - 28.03.2016

PHP
PHP
1 309 участник(ов)

Группа про современный PHP. Обсуждаем ООП, TDD, BDD, DDD, SOLID, GRASP и прочие крутые базворды Для ознакомления: https://gist.github.com/mkusher/711bd46f0b62fbae851182e6fb3b1839 Группа PHP для новичков @phpGeeksJunior Вакансии: https://t.me/fordev

PHP — вакансии, поиск работы и аналитика
PHP — вакансии, поиск работы и аналитика
1 251 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению PHP, Laravel, Symfony, Yii и т.д. Здесь всё: full-time, part-time, remote и разовые подработки. См. также: @qa_jobs, @devops_jobs, @javascript_jobs, @nodejs_jobs, @uiux_jobs, @products_jobs

phpGeeksJunior
phpGeeksJunior
980 участник(ов)

Группа для новичков. Не стесняйтесь задавать вопросы по php. Не флудить!!!! Правила и полезные ссылки https://gist.github.com/exileed/a53dd0617b35a705ff44b38c8028e6a5 Бест от пхпгикс https://t.me/best_of_phpgeeks

phpclub.ru
phpclub.ru
872 участник(ов)

Официальный чат phpclub.ru - остерегайтесь подделок #rules Правила группы - уважайте друг друга. Скриншоты -> ссылками. Код -> pastebin.com. Вакансии строго -> https://goo.gl/4bNxym, в чат ссылку. За рекламу и мат - БАН!

Devall | PHP
Devall | PHP
272 участник(ов)

Пристанище для восходящих звёзд разработки, которые перейдут на более адекватные языки. http://combot.org/chat/-1001014863761 Инвайт: j.mp/devallphp