Хорошо, не буду надувать щеки. :) Я собственно получил что хотел, а дорогу в мануал я прекрасно знаю. Понятно, что тебе хочется самоутвердиться. Не стану мешать - законное желание.
Вообще конечно смешно. Ты говоришь, что гадалок нет, а сам пытаешься угадать... да нет. Даже не так. Ты пытаешься применить свои знания туда, где это совсем не нужно. Потому что не знаешь предмета.
Я не меняю поведение. Это нужно мне для дебаггера. Просто хочу выкинуть предупреждение, что он не дебажит таблицы, не поддерживающие транзакции. Именно потому, что это может привести к непредсказуемым результатам. Дебаггер как раз использует транзакцию.
Да, дебаггер используется билдером, так что там все в тему. А принцип Лисков я прекрасно знаю. Кстати, принципы знать нужно не только для того, чтобы их фанатично соблюдать. Но и для того, чтобы
осознанно нарушать, где это плезно. Это так, к слову.
Если уж так интересно посмотреть на сниппет, то пожалуйста:
public function execute($params = null)
{
$sql = $this->createSqlString($params);
if (false === $this->checkEngine($sql)) {
AbcError::logic(' Component PDO: '. ABC_NO_TRANSACTION);
return false;
}
if ($this->pdo->inTransaction()) {
$this->pdo->exec("SAVEPOINT sqldebug");
$this->pdo->query($sql);
$this->pdo->exec("ROLLBACK TO SAVEPOINT sqldebug");
} else {
$this->pdo->beginTransaction();
$this->pdo->query($sql);
$this->pdo->rollback();
}
return parent::execute($params);
}
Вот сейчас доделаю метод checkEngine() и возрадуюсь. :)
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.