Commit ceff7cc7 by Alexander Makarov

Removed requirement to use \Callback from Connection::transaction, improved docs

parent 56a7ec76
...@@ -82,13 +82,11 @@ use yii\caching\Cache; ...@@ -82,13 +82,11 @@ use yii\caching\Cache;
* }); * });
* ~~~ * ~~~
* *
* If needed you can pass transaction object instance as a second parameter, for example when you need to * If needed you can pass transaction isolation level as a second parameter:
* set custom transaction isolation level:
* *
* ~~~ * ~~~
* $connection->transaction(function() { * $connection->transaction(function(Transaction $transaction) {
* * // $transaction->db->...
* // your code here
* }, Transaction::READ_UNCOMMITTED); * }, Transaction::READ_UNCOMMITTED);
* ~~~ * ~~~
* *
...@@ -461,18 +459,18 @@ class Connection extends Component ...@@ -461,18 +459,18 @@ class Connection extends Component
/** /**
* Executes callback provided in a transaction. * Executes callback provided in a transaction.
* *
* @param \Closure $callback a callback that performs the job. Accepts transaction instance as parameter. * @param mixed $callback a valid PHP callback that performs the job. Accepts transaction instance as parameter.
* @param string|null $isolationLevel The isolation level to use for this transaction. * @param string|null $isolationLevel The isolation level to use for this transaction.
* See [[Transaction::begin()]] for details. * See [[Transaction::begin()]] for details.
* @throws \Exception * @throws \Exception
* @return mixed result of callback function * @return mixed result of callback function
*/ */
public function transaction(\Closure $callback, $isolationLevel = null) public function transaction($callback, $isolationLevel = null)
{ {
$transaction = $this->beginTransaction($isolationLevel); $transaction = $this->beginTransaction($isolationLevel);
try { try {
$result = $callback($transaction); $result = call_user_func($callback, $transaction);
$transaction->commit(); $transaction->commit();
} catch (\Exception $e) { } catch (\Exception $e) {
$transaction->rollBack(); $transaction->rollBack();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment