![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/laminas/laminas-db/src/TableGateway/Feature/ |
<?php namespace Laminas\Db\TableGateway\Feature; use Laminas\Db\Adapter\AdapterInterface; use Laminas\Db\Sql\Sql; class MasterSlaveFeature extends AbstractFeature { /** @var AdapterInterface */ protected $slaveAdapter; /** @var Sql */ protected $masterSql; /** @var Sql */ protected $slaveSql; /** * Constructor */ public function __construct(AdapterInterface $slaveAdapter, ?Sql $slaveSql = null) { $this->slaveAdapter = $slaveAdapter; if ($slaveSql) { $this->slaveSql = $slaveSql; } } /** @return AdapterInterface */ public function getSlaveAdapter() { return $this->slaveAdapter; } /** * @return Sql */ public function getSlaveSql() { return $this->slaveSql; } /** * after initialization, retrieve the original adapter as "master" */ public function postInitialize() { $this->masterSql = $this->tableGateway->sql; if ($this->slaveSql === null) { $this->slaveSql = new Sql( $this->slaveAdapter, $this->tableGateway->sql->getTable(), $this->tableGateway->sql->getSqlPlatform() ); } } /** * preSelect() * Replace adapter with slave temporarily */ public function preSelect() { $this->tableGateway->sql = $this->slaveSql; } /** * postSelect() * Ensure to return to the master adapter */ public function postSelect() { $this->tableGateway->sql = $this->masterSql; } }