2012-10-24 3 views
0

방법 1getQuery stdClass 클래스 데이터 행 삽입 대 (참) - 줌라

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(); 

내가 줌라를 사용하고 나를 일을 얻을 수 있습니다 모두 위의 쿼리를 사용하고있어 끝난. 내 문제는 방법 1과 방법 2의 차이점은 무엇입니까? 업계 표준은 무엇입니까? 위의 방법을 사용해야하는 특정 상황이 있습니까? 어느 것이 더 낫고 왜?

감사

답변

2

방법 1 (M1)과 방법 2 (M2)는 모두 유효하다 줌라! 2.5 메커니즘을 사용하는 M1은 반 자동화 된 방법을 사용하며 이미 객체로 작업하고있는 곳에서 더 일반적으로 사용됩니다.

M2는 분명히 더 구체적인 단계 집합이지만 두 가지 모두는 JDatabase 등이 제공하는 추상화를 작동합니다. al. 데이터베이스 서버로부터 당신을 격리시킵니다.

그런 말로하면 M1은 Joomla! 전체에서 몇 군데 (말 그대로) 사용됩니다. M2 광범위

유일한 이상한 것이 사용된다 (/libararies/joomla/database/를 계산하지 않음) 2.5 설치 일반적 Joomla! coding standards 대신 OOP 또는 공장의 패턴을 사용하는 대신 선호 전역의 사용을 삼가고, M1의 global의 사용이다. 따라서 다음과 같이

$database = JFactory::getDBO(); 

대신 global 참조를 사용하십시오.