Задать вопрос
@Kerm

Проблема с пониманием, будет ли работать такая реализация?

<?php

class Name {
	/**
     * @var Db
     */
    protected $db;

	public function __construct(Db $db)
    {
        $this->db = $db;
    }

	public function set() {
	
		/** @var Ips $ips */
		$ips = $this->container->get(Ips::class);
		
		
		$this->db->startTransaction();
		
		// здесь идет какой то SQL запрос с записью..
		
		
		if ($ips->insertInfo()) { <- у метода в другом классе тоже запись в бд и есть $this->db->startTransaction(); $this->db->commit()
			$this->db->commit();
		}
		$this->db-rollback();
	}
}

class Ips {

	/**
     * @var Db
     */
    protected $db;

	public function __construct(Db $db)
    {
        $this->db = $db;
    }

	public function insertInfo() {	
		$this->db->startTransaction();

		if(1=1) {
			// здесь идет какой то SQL запрос с записью..
	
			$this->db->commit();
			
			return true;
		}
		
		$this->db-rollback();
		return false;
	}
}


Я сам думаю что все должно работать, у каждого класса свой экземпляр класса DB, но в друг я чего то не учел? подскажите коммит в классе Ips он же не сделает коммит транзакции в классе Name?
  • Вопрос задан
  • 72 просмотра
Подписаться 1 Простой 4 комментария
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽