2010-11-23 12 views
2

私はコードイグナイターを使ってPHP/MySQLアプリケーションを構築する方法を学ぶチュートリアルの手順に従いました。そして、完了するとアプリケーションはエラーなく失敗します。私は、フル機能のIDEではなくTextMateを使用しています。CodeIgniterアプリケーションをどのようにデバッグしますか?

CodeIgniterを使用しているほとんどの開発者はどのようにアプリケーションをデバッグしますか?バブルエラーとブラウザセッションへのスタックトレースのためのフレームワークには何かがありますか?

私が今対処したい特定の問題は、データベース関連のようです。私は自分のデータベースを設定し、autoload.phpをセットアップし、テーブルデータを扱うためのコントローラとモデル、およびそれを表示するためのビューを作成しました。私accounts_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が空で発生しました!」を参照してください。私はデータベースが空でなく、構成が正しいことを知っているので、データベースに接続しているかどうか、またはクエリが空であるかどうかのヒントを与えるためにフレームワークから何かが必要です。

答えて

3

Xdebugを使用できます。Test Driven Developmentで始めることをお勧めします。PHPではPHP Unitを使用できます。

+1

更新(2年後):PHP単位はセレンhttp://seleniumhq.org(機能試験)でかなりうまく機能 –

+0

リンクが死んでいるように思えます:[ http://www.lastcraft.com/first_test_tutorial.php] (http://www.lastcraft.com/first_test_tutorial.php) – bg17aw

1

if ($query->num_rows() > 0)でした。これは、0より多くの行が返された場合にエラーを出力します。

+0

まあ、radda radda!ありがとうございました!私はチュートリアルからそのコードをコピーし、細部を見落としました。それは私を1つのエラーを越えて別のエラーにします。私はちょうどここで、ほとんどの人がすばやくスタックトレース、コードをステップスルーなどを見ることを可能にする完全なIDEを使用することに卒業したと思います。 –

+0

次のエラーは何ですか? –

+0

私は、これらのものを許可するIDEは使用しません(とにかく、PHP用ではありません)。 :-P –

3

Firefoxの素晴らしいWeb開発拡張機能であるFirebugをまだ見ていないのであれば、それをチェックアウトする必要があります。

FirebugにはFirePHPという拡張子があり、PHPアプリケーションをデバッグできます。誰かがFireIgnitionと呼ばれるCodeIgniterのプラグインを作りました。

ログ変数などを使用すると、ページの実行中に何が起こっているのかを簡単に確認できます。

+0

ヒントをありがとう。 –

5

例外を処理してそのエラーのスタックトレースを記録できるように、重要なコードをtry/catchブロックに囲むことをお勧めします。私の最近の経験では、CodeIgniterが提供するshow_error()関数とともにtry/catchブロックを使用して、コード内のエラーをデバッグして捕捉しました。ここに例があります:

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

1

私はVS.PHPを使用しています。これは、Visual Studio for PHPの仕事のためのアドインです。非常に素晴らしい。構文の強調表示、自動補完、PHPとJavaScriptのデバッグ、同じセッションで動作します。私は、変数、オブジェクト、配列、またはそれを表示するには、画面上のリソースをスローする必要がある場合dbugが非常に有用であることがわかり

3


example nested arrays with mixed keys

CodeIgniterの中にそれを統合するための記事がhere見つけることができます。

-1

興味があるだけ:

$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 
} 
関連する問題