2012-10-24 24 views
0

方法1getQuery(真)VS stdClass的類數據插入行 - 的Joomla

global $database; 
    $user = new stdClass; 
    $user->id = NULL; 
    $user->name = $name; 
    $user->username = $username; 

    if (!$database->insertObject('#__users', $user, 'id')) { 
    echo $database->stderr(); 
    return false; 
    } 

    return $user->id; 

方法2

$db = JFactory::getDBO();  
    $query = $db->getQuery(true); 
    $query->insert($db->nameQuote('#__users')); 
    $query->set($db->nameQuote('name').'='.$db->quote($$name).','. 
    $db->nameQuote('username').'='.$db->quote($username));  
    $db->setQuery($query); 
    $db->query(); 
    $new_id = $db->insertId(); 

我使用Joomla和使用兩種以上的查詢,它可以讓我獲得工作完成。我的問題是方法1和方法2有什麼區別?什麼是行業標準?有什麼具體情況我應該使用上述方法?哪一個更好,爲什麼?

感謝

回答

2

方法1(M1)和方法2(M2)都有效的Joomla! 2.5機制,M1使用半自動化方法,並且在您已經使用對象的情況下可能更常用。

M2顯然是一個更具體的一系列步驟但雙方會通過工作等JDatabase提供的抽象。人。將您與數據庫服務器隔離開來。

話雖如此M1是在少數地方(字面)在整個的Joomla只用! 2.5安裝而M2被廣泛

唯一奇怪的使用(不計算/libararies/joomla/database/)是利用在一個M1的global,通常Joomla! coding standards避開使用全局變量而寧願使用OOP或工廠模式,而不是。所以,像這樣:

$database = JFactory::getDBO(); 

而不是使用global參考。