Как вы отлаживаете приложения CodeIgniter? - PullRequest
2 голосов
/ 23 ноября 2010

Я следовал инструкциям в руководстве, чтобы узнать, как использовать Code Igniter для создания приложения PHP / MySQL, и по завершении приложение завершается сбоем без ошибок.Я использую TextMate, а не полнофункциональную IDE.

Как большинство разработчиков, использующих Code Igniter, отлаживают свои приложения?Есть ли что-то в структуре для пузырящихся ошибок и трассировки стека в сеансе браузера?

Конкретная проблема, которую я хотел бы решить, теперь связана с базой данных.Я сконфигурировал свою базу данных, настроил autoload.php и создал контроллер и модель для обработки табличных данных и представление для их представления.Из моего account_model.php:

 public function getData()  
 {
     //Query the data table for every record and row
     $query = $this->db->get('accounts');

     if ($query->num_rows() > 0)
     {
         show_error('Database is empty!');
     }
     else
     {
         return $query->result();
     }
 }

Когда я запускаю приложение, я вижу «Обнаружена ошибка \ nDatabase is empty!».Поскольку я знаю, что база данных не пуста, а конфигурация правильная, мне нужно что-то из среды, чтобы дать мне подсказку, подключается ли она к базе данных или почему запрос пуст.

Ответы [ 7 ]

5 голосов
/ 24 ноября 2010

Хорошая практика - заключать критический код в блоки try / catch, чтобы вы могли обрабатывать исключения, а затем записывать в стек трассировку этой ошибки.В своем недавнем опыте я использовал блоки try / catch вместе с функцией show_error (), предоставленной CodeIgniter, для отладки и обнаружения ошибок в моем коде.Вот пример:

public function getData()  
 {
     //Query the data table for every record and row
     try{
        $query = $this->db->get('accounts');

        if ($query->num_rows() > 0)
        {
            show_error('Database is empty!');
        }
       else
       {
           return $query->result();
       }
     } catch(Exception $e){
        log_message('debug',$e->getMessage()); // use codeigniters built in logging library
        show_error($e->getMessage()); // or echo $e->getMessage()
      }
 }

Класс исключения PHP предоставляет различные методы, помогающие отладить вашу ошибку.http://www.php.net/manual/en/class.exception.php

3 голосов
/ 30 января 2012

Я считаю dbug весьма полезным, когда мне нужно вывести на экран переменную, объект, массив или ресурс для просмотра:example nested arrays with mixed keys

Статью по интеграции его в CodeIgniter можно найти здесь .

3 голосов
/ 23 ноября 2010

Если вы еще не видели удивительное расширение для веб-разработки для Firefox под названием Firebug , вы должны проверить его!

Firebug имеет расширение под названием FirePHP , которое позволяет вам отлаживать PHP-приложения. Кто-то также создал плагин для CodeIgniter под названием FireIgnition .

Он позволяет регистрировать переменные и т. Д., Упрощая просмотр того, что происходит во время выполнения страниц.

3 голосов
/ 23 ноября 2010

Вы можете использовать Xdebug , и неплохо начать с Разработка через тестирование , в PHP вы можете использовать PHP Unit для этого.

1 голос
/ 24 ноября 2010

Я использую VS.PHP, надстройку к Visual Studio для моей работы на PHP.Очень хорошо.Подсветка синтаксиса, автозаполнение, отладка PHP и JavaScript в одном сеансе, работает.

1 голос
/ 23 ноября 2010

Вы сделали if ($query->num_rows() > 0). Это выведет сообщение об ошибке, если будет возвращено более 0 строк.

0 голосов
/ 19 сентября 2012

Просто любопытно:

$query->num_rows() > 0

если это успех, значит, есть некоторые результаты ...

Я сделаю что-то вроде этого ...

    function get_data()
    {


    $results = $this->db->get("tble");

    if($results->num_rows()>0)
    {

    return $results->result_array();

    }
    else
    {
    return array();

    }

}

и в контроллере

if(empty( $this->model->get_data() ))
{

//do something with data
}
else
{

//no data
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...