2011-10-18 9 views
0

あなたのようなクラスの機能を持っていた場合:正しい戻り値際に複数の可能性

アイテムあなたが戻ってくる
public function insertItemToTable($item){ 
    $sql = query("insert to table {$item}"); 
    $insertId = sql_inserted_id(); 
} 

  1. あなたは機能のためにtrue/falseを返し、挿入されたIDにクラス変数を設定します(例:$this->insertedItem = sql_insert_id()
  2. 戻るあなたの例では、挿入されたID
+1

これはかなり主観的です。関数からIDを返すか、失敗した場合はfalseを返します。 – thelastshadow

+0

最後のID/falseを返すことは、単に主観的なものではなく、かなり便利です。まず、 '$ obj-> insertItemToTable($ item)'は必要なすべての情報を提供します:IDが必要な場合はIDを、それ以外の場合は常に '(if($ obj-> insertItemToTable ($ item))))... ' – dfsq

答えて

1

の値は、次のことができます両方を行う。

<?php 
public function insertItemToTable($item){ 
    if ($sql = query("insert to table {$item}")) { 
     return sql_inserted_id(); 
    } 
    return false; 
} 

それはあなたのコードでそれをテストするのは簡単です:

<?php 
if (false !== ($id = $obj->insertItemToTable($item)) { 
    // it was inserted, $id is the new id 
} else { 
    // it failed and returned false 
} 

それは、人々が使用する一般的なパターンですが、例えば

<?php 
if ($r = mysql_query('SELECT * FROM mytable')) { 
    while ($rs = mysql_fetch_array($r)) { 
     //.... 
    } 
} 

最終的には、それは好みのことであり、正しい方法はありません。

関連する問題