File manager - Edit - /home/premiey/www/wp-includes/images/media/DB.tar
Back
PDO/Connection.php 0000666 00000006764 15165413134 0010022 0 ustar 00 <?php /** * @author Slavko Babic * @date 2017-08-21 */ namespace AmeliaBooking\Infrastructure\DB\PDO; use AmeliaBooking\Domain\Services\Settings\SettingsService; use AmeliaBooking\Infrastructure\WP\SettingsService\SettingsStorage; use \PDO; /** * Class Connection * * @package AmeliaBooking\Infrastructure\DB\PDO */ class Connection extends \AmeliaBooking\Infrastructure\Connection { /** @var PDO $pdo */ protected $pdo; /** @var string $dns */ private $dns; /** @var string $driver */ private $driver = 'mysql'; /** * Connection constructor. * * @param string $database * @param string $username * @param string $password * @param string $host * @param int $port * @param string $charset */ public function __construct( $host, $database, $username, $password, $charset = 'utf8', $port = 3306 ) { parent::__construct( $host, $database, $username, $password, $charset, $port ); $this->handler = new PDO( $this->dns(), $this->username, $this->password, $this->getOptions() ); $settingsService = new SettingsService(new SettingsStorage()); $emulatePrepares = $settingsService->getSetting('db', 'pdoEmulatePrepares'); $this->handler->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $this->handler->setAttribute( PDO::ATTR_EMULATE_PREPARES, $emulatePrepares !== null ? $emulatePrepares : false ); $this->handler->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); $this->handler->exec('SET SESSION sql_mode = "TRADITIONAL"'); $this->handler->exec('SET FOREIGN_KEY_CHECKS = 0'); if ($settingsService->getSetting('db', 'pdoBigSelect')) { $this->handler->exec('SET SQL_BIG_SELECTS = 1'); } } /** * @return string */ private function dns() { if ($this->dns) { return $this->dns; } $this->socketHandler(); $socketPath = property_exists($this, 'socketPath') && $this->socketPath ? ";unix_socket=$this->socketPath" : ''; return $this->dns = "{$this->driver}:host={$this->host};port={$this->port}';dbname={$this->database}{$socketPath}"; } /** * @return array */ private function getOptions() { $options = [ PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION, ]; if (defined('DB_CHARSET')) { $options[PDO::MYSQL_ATTR_INIT_COMMAND] = 'set names ' . DB_CHARSET; } $settingsService = new SettingsService(new SettingsStorage()); $ssl = $settingsService->getSetting('db', 'ssl'); if ($ssl['enable']) { if ($ssl['enable']) { if ($ssl['key'] !== null) { $options[PDO::MYSQL_ATTR_SSL_KEY] = $ssl['key']; } if ($ssl['cert'] !== null) { $options[PDO::MYSQL_ATTR_SSL_CERT] = $ssl['cert']; } if ($ssl['ca'] !== null) { $options[PDO::MYSQL_ATTR_SSL_CA] = $ssl['ca']; } if ($ssl['verify_cert'] !== null) { $options[PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT] = $ssl['verify_cert']; } } } return $options; } } MySQLi/Query.php 0000666 00000000635 15165413134 0007513 0 ustar 00 <?php namespace AmeliaBooking\Infrastructure\DB\MySQLi; /** * Class Query * * @package AmeliaBooking\Infrastructure\DB\MySQLi */ class Query { private $value; /** * @param string $value */ public function setValue($value) { $this->value = $value; } /** * * @return mixed */ public function getValue() { return $this->value; } } MySQLi/Connection.php 0000666 00000006527 15165413134 0010513 0 ustar 00 <?php namespace AmeliaBooking\Infrastructure\DB\MySQLi; use AmeliaBooking\Domain\Services\Settings\SettingsService; use AmeliaBooking\Infrastructure\WP\SettingsService\SettingsStorage; use mysqli; /** * Class Connection * * @package AmeliaBooking\Infrastructure\DB\MySQLi */ class Connection extends \AmeliaBooking\Infrastructure\Connection { /** @var Statement $statement */ public $statement; /** @var Result $result */ private $result; /** @var Query $query */ private $query; /** @var mysqli $mysqli */ private $mysqli; /** * Connection constructor. * * @param string $database * @param string $username * @param string $password * @param string $host * @param int $port * @param string $charset */ public function __construct( $host, $database, $username, $password, $charset = 'utf8', $port = 3306 ) { parent::__construct( $host, $database, $username, $password, $charset, $port ); $this->socketHandler(); $this->result = new Result(); $this->query = new Query(); if (property_exists($this, 'socketPath') && $this->socketPath) { $this->mysqli = new mysqli($this->host, $this->username, $this->password, $this->database, $this->port, $this->socketPath); } else { $this->mysqli = new mysqli($this->host, $this->username, $this->password, $this->database, $this->port); } $settingsService = new SettingsService(new SettingsStorage()); $ssl = $settingsService->getSetting('db', 'ssl'); if ($ssl['enable']) { $this->mysqli->ssl_set($ssl['key'], $ssl['cert'], $ssl['ca'], null, null); } $this->mysqli->set_charset($this->charset); $stmt = $this->mysqli->prepare('SET SESSION sql_mode = "TRADITIONAL"'); $stmt->execute(); $stmt = $this->mysqli->prepare('SET FOREIGN_KEY_CHECKS = 0'); $stmt->execute(); $settingsService = new SettingsService(new SettingsStorage()); if ($settingsService->getSetting('db', 'pdoBigSelect')) { $stmt = $this->mysqli->prepare('SET SQL_BIG_SELECTS = 1'); $stmt->execute(); } $this->statement = new Statement($this->mysqli, $this->result, $this->query); $this->handler = $this; } /** * @param string $query * * @return mixed */ public function query($query) { $this->result->setValue($this->mysqli->query($query)); return $this->statement; } /** * @param string $query * * @return mixed */ public function prepare($query) { $this->query->setValue($query); return $this->statement; } /** * * @return mixed */ public function lastInsertId() { return $this->mysqli->insert_id; } /** * * @return mixed */ public function beginTransaction() { return $this->mysqli->begin_transaction(); } /** * @return bool */ public function commit() { return $this->mysqli->commit(); } /** * @return bool */ public function rollback() { return $this->mysqli->rollback(); } } MySQLi/Result.php 0000666 00000000673 15165413134 0007666 0 ustar 00 <?php namespace AmeliaBooking\Infrastructure\DB\MySQLi; /** * Class Result * * @package AmeliaBooking\Infrastructure\DB\MySQLi */ class Result { private $value; /** * @param string $value * * @return mixed */ public function setValue($value) { $this->value = $value; } /** * * @return mixed */ public function getValue() { return $this->value; } } MySQLi/Statement.php 0000666 00000005602 15165413134 0010351 0 ustar 00 <?php namespace AmeliaBooking\Infrastructure\DB\MySQLi; use AmeliaBooking\Infrastructure\Common\Exceptions\QueryExecutionException; use mysqli; /** * Class Statement * * @package AmeliaBooking\Infrastructure\DB\MySQLi */ class Statement { /** @var mysqli $mysqli */ private $mysqli; /** @var Query $query */ private $query; /** @var Result $result */ private $result; /** @var array $params */ private $params = []; /** * @param mysqli $mysqli * @param Result $result * @param Query $query */ public function __construct($mysqli, $result, $query) { $this->mysqli = $mysqli; $this->result = $result; $this->query = $query; } /** * * @return mixed */ public function fetch() { return $this->result->getValue()->fetch_assoc(); } /** * * @return mixed */ public function fetchAll() { $rows = []; while ($row = $this->result->getValue()->fetch_assoc()) { $rows[] = $row; } return $rows; } /** * * @return mixed */ public function rowCount() { return $this->result->getValue()->num_rows; } /** * @param array $params * * @return mixed */ public function execute($params = []) { $this->params = array_merge($this->params, $params); $paramsKeys = []; $paramsValues = []; $paramsTypes = []; foreach ($this->params as $key => $value) { $index = strpos($this->query->getValue(), $key); $paramsKeys[$index] = $key; $paramsValues[$index] = $value; $paramsTypes[$index] = gettype($this->params[$key])[0]; } usort($paramsKeys, function ($a, $b) { return strlen($b) - strlen($a); }); ksort($paramsValues); ksort($paramsTypes); $referencedQueryParams = []; foreach ($paramsValues as $key => &$value) { $referencedQueryParams[$key] = &$value; } $parsedQuery = str_replace($paramsKeys, '?', $this->query->getValue()); if ($stmt = $this->mysqli->prepare($parsedQuery)) { if ($referencedQueryParams) { call_user_func_array( array($stmt, 'bind_param'), array_merge([str_replace('N', 'i', implode('', $paramsTypes))], $referencedQueryParams) ); } $success = $stmt->execute(); $this->result->setValue($stmt->get_result()); } else { throw new \Exception(); } $this->params = []; return $stmt && $success; } /** * @param string $key * @param string $value * * @return mixed */ public function bindParam($key, $value) { $this->params[$key] = $value; } }
| ver. 1.4 |
Github
|
.
| PHP 5.4.45 | Generation time: 0 |
proxy
|
phpinfo
|
Settings