master

laravel/framework

Last updated at: 29/12/2023 09:21

DatabaseTransactionRecord.php

TLDR

The provided file, DatabaseTransactionRecord.php, is a class that represents a database transaction record. It has properties to store the database connection name, transaction level, and parent transaction instance. It also has methods to register and execute callbacks that should be executed after committing the transaction.

Methods

__construct

The constructor method initializes a new DatabaseTransactionRecord instance with the specified database connection name, transaction level, and optional parent transaction instance.

addCallback

This method registers a callback function to be executed after committing the transaction. The callback parameter should be a callable.

executeCallbacks

This method executes all of the registered callbacks in the order they were added.

getCallbacks

This method returns an array containing all of the registered callbacks.

<?php

namespace Illuminate\Database;

class DatabaseTransactionRecord
{
    /**
     * The name of the database connection.
     *
     * @var string
     */
    public $connection;

    /**
     * The transaction level.
     *
     * @var int
     */
    public $level;

    /**
     * The parent instance of this transaction.
     *
     * @var \Illuminate\Database\DatabaseTransactionRecord
     */
    public $parent;

    /**
     * The callbacks that should be executed after committing.
     *
     * @var array
     */
    protected $callbacks = [];

    /**
     * Create a new database transaction record instance.
     *
     * @param  string  $connection
     * @param  int  $level
     * @param  \Illuminate\Database\DatabaseTransactionRecord|null  $parent
     * @return void
     */
    public function __construct($connection, $level, ?DatabaseTransactionRecord $parent = null)
    {
        $this->connection = $connection;
        $this->level = $level;
        $this->parent = $parent;
    }

    /**
     * Register a callback to be executed after committing.
     *
     * @param  callable  $callback
     * @return void
     */
    public function addCallback($callback)
    {
        $this->callbacks[] = $callback;
    }

    /**
     * Execute all of the callbacks.
     *
     * @return void
     */
    public function executeCallbacks()
    {
        foreach ($this->callbacks as $callback) {
            $callback();
        }
    }

    /**
     * Get all of the callbacks.
     *
     * @return array
     */
    public function getCallbacks()
    {
        return $this->callbacks;
    }
}