Ну если посмотреть код, то в Joomla 1.6 он несколько отличается:
// Check for a database error.
if ($this->_db->getErrorNum()) {
$e = new JException($this->_db->getErrorMsg());
$this->setError($e);
return false;
}
// Check that we have a result.
if (empty($row)) {
$e = new JException(JText::_('JLIB_DATABASE_ERROR_EMPTY_ROW_RETURNED'));
$this->setError($e);
return false;
}
// Bind the object with the row and return.
return $this->bind($row);
и в Joomla 1.5:
if ($result = $db->loadAssoc( )) {
return $this->bind($result);
}
else
{
$this->setError( $db->getErrorMsg() );
return false;
}
По логике Joomla 1.6 ошибка будет в 3-х случаях:
1. произошла ошибка в SQL
2. вернулся пустой результат
3. в процессе маппинга результата на объект произошла ошибка
Отсутствие записи по указанному ключу должно попадать под 2-й пункт. Другое дело, если посмотреть описание параметра, мы заметим:
An optional primary key value to load the row by, or an array of fields to match. If not set the instance property value is used.
Вот последнее предложение может быть вполне критичным - мы же имеем дело с singleton'ом, т.е. получается может быть использовано значение от предыдущего вызова.