Skip to content
This repository was archived by the owner on Dec 25, 2020. It is now read-only.
Kerem Güneş edited this page Jan 12, 2017 · 7 revisions

Initializing

use Oppa\Config;

$config = new Config(array $cfg);

Simple configuration for single connections.

$cfg = [
    'agent'    => 'mysql',
    'database' => [
        'host'     => 'localhost',  'name'     => 'test',
        'username' => 'test',       'password' => '********',
        'charset'  => 'utf8',       'timezone' => '+00:00',
    ]
];

Master/slave configuration for multiple connections.

$cfg = [
    'agent'    => 'mysql',
    'sharding' => true,
    'database' => [
        'name'     => 'test',
        'username' => 'test', 
        'password' => '********',
        'charset'  => 'utf8', 
        'timezone' => '+00:00',
        'master'   => ['host' => 'master.mysql.local', 'port' => 3306],
        'slaves'   => [
            ['host' => 'slave1.mysql.local', 'port' => 3307 /* e.g.. */, 
                'username' => 'test_on_slave1', 'password' => '...'],
            ['host' => 'slave2.mysql.local', ...],
            ['host' => 'slave3.mysql.local', ...],
        ],
    ]
];

Extra options

// change fetch type 
$cfg.fetch_type => 'object @default', 'array_asc', 'array_num', 'array_ascnum'
$cfg.fetch_limit => 123 // 1000 @default

// port & socket
$cfg.database.port => 'port number'
$cfg.database.socket => '/path/to.sock'
// use can define different port, socket, username, password for each master/slave directives
$cfg.database.master.port => 'port number'

// connect options
// see supported constants for mysqli: http://php.net/mysqli.real_connect
$cfg.database.connect_options => [MYSQLI_OPT_CONNECT_TIMEOUT => 5, ...]

// activate profiling
$cfg.profile => true

// type converting on result data
// implemented for only all int(s) and float(s)
$cfg.map_result = true|false
// this needs option above
// pgsql: works if field = boolean
// mysql: works if field = tinyint(1) and field value === 1|0 (please use carefully!)
// pgsql&mysql: works if field = bit(1) and field value === '1'|'0' (please use carefully!)
$cfg.map_result_bool = true|false

// activate query logging
// notice: Oppa tries to secure your log directory, but also it is your responsibility
$cfg.query_log => true
$cfg.query_log_level => Oppa\Logger::ALL
// or 
$cfg.query_log_level => Oppa\Logger::INFO | Oppa\Logger::FAIL
$cfg.query_log_directory => '/path/to/.logs/db' // required if query_log=true

// error handler options (used for only query errors)
// this options special for error handling, you can throw error
// or do something else you want
$cfg.query_error_handler => function($exception, $query, $queryParams) {
    print $exception->getMessage();
}

Using methods

$config->set('foo', 1);
dump $config->get('foo'); // int(1)
dump $config->get('noneexists'); // NULL
dump $config->get('noneexists', 0); // int(0)
// or
$config->foo = 1;
dump $config->foo; // int(1)
dump $config->noneexists; // NULL

// get all options as array
$config->toArray();

Clone this wiki locally