Ifsnop\Mysqldump\Mysqldump::__construct PHP Method

__construct() public method

Constructor of Mysqldump. Note that in the case of an SQLite database connection, the filename must be in the $db parameter.
public __construct ( string $dsn = '', string $user = '', string $pass = '', array $dumpSettings = [], array $pdoSettings = [] )
$dsn string PDO DSN connection string
$user string SQL account username
$pass string SQL account password
$dumpSettings array SQL database settings
$pdoSettings array PDO configured attributes
    public function __construct($dsn = '', $user = '', $pass = '', $dumpSettings = array(), $pdoSettings = array())
    {
        $dumpSettingsDefault = array('include-tables' => array(), 'exclude-tables' => array(), 'compress' => Mysqldump::NONE, 'no-data' => array(), 'add-drop-table' => false, 'single-transaction' => true, 'lock-tables' => true, 'add-locks' => true, 'extended-insert' => true, 'complete-insert' => false, 'disable-keys' => true, 'where' => '', 'no-create-info' => false, 'skip-triggers' => false, 'add-drop-trigger' => true, 'routines' => false, 'hex-blob' => true, 'databases' => false, 'add-drop-database' => false, 'skip-tz-utc' => false, 'no-autocommit' => true, 'default-character-set' => Mysqldump::UTF8, 'skip-comments' => false, 'skip-dump-date' => false, 'init_commands' => array(), 'net_buffer_length' => self::MAXLINESIZE, 'disable-foreign-keys-check' => true);
        $pdoSettingsDefault = array(PDO::ATTR_PERSISTENT => true, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => false);
        $this->user = $user;
        $this->pass = $pass;
        $this->parseDsn($dsn);
        $this->pdoSettings = self::array_replace_recursive($pdoSettingsDefault, $pdoSettings);
        $this->dumpSettings = self::array_replace_recursive($dumpSettingsDefault, $dumpSettings);
        $this->dumpSettings['init_commands'][] = "SET NAMES " . $this->dumpSettings['default-character-set'];
        if (false === $this->dumpSettings['skip-tz-utc']) {
            $this->dumpSettings['init_commands'][] = "SET TIME_ZONE='+00:00'";
        }
        $diff = array_diff(array_keys($this->dumpSettings), array_keys($dumpSettingsDefault));
        if (count($diff) > 0) {
            throw new Exception("Unexpected value in dumpSettings: (" . implode(",", $diff) . ")");
        }
        if (!is_array($this->dumpSettings['include-tables']) || !is_array($this->dumpSettings['exclude-tables'])) {
            throw new Exception("Include-tables and exclude-tables should be arrays");
        }
        // Dump the same views as tables, mimic mysqldump behaviour
        $this->dumpSettings['include-views'] = $this->dumpSettings['include-tables'];
        // Create a new compressManager to manage compressed output
        $this->compressManager = CompressManagerFactory::create($this->dumpSettings['compress']);
    }

Usage Example

 /**
  * MysqlDumperService constructor.
  *
  * @param string             $dsn
  * @param string             $user
  * @param string             $pass
  * @param MysqlDumperOptions $dumpSettings
  * @param array              $pdoSettings
  */
 public function __construct($dsn = '', $user = '', $pass = '', MysqlDumperOptions $dumpSettings, $pdoSettings = [])
 {
     parent::__construct($dsn, $user, $pass, $dumpSettings->toDumperArray(), $pdoSettings);
 }