Ответ 1
Если ни один из этих вызовов функций не пытается открыть или совершить транзакцию самостоятельно или использовать другое соединение, кроме того, которое хранится в $db
, да, оно должно работать нормально.
Объект PDO (или RDBMS, если на то пошло) не знает или не заботится о том, вызываете ли вы другие функции в PHP. Все, что он знает, это то, что действие происходит в том же открытом соединении, что и открытое в $db
. Мы предполагаем, что эти функции либо принимают $db
в качестве параметра, либо получают доступ к нему по всему миру.
Помните, что хотя PDO отслеживает состояние транзакции (отображается через PDO::inTransaction()
), это действительно RDBMS, которая управляет состоянием транзакции, а не PDO или кодом приложения PHP. Если функция пытается открыть новую транзакцию до того, как предыдущая была совершена, документированное поведение MySQL заключается в автоматической фиксации предыдущей транзакции, поскольку она не поддерживает вложенность транзакций.
Поэтому просто убедитесь, что ваши дополнительные вызовы функций не пытаются изменить состояние транзакции.