首页 > 代码库 > [李景山php]每天laravel-20161119|Connector.php
[李景山php]每天laravel-20161119|Connector.php
<?php namespace Illuminate\Database\Connectors; use PDO; use Exception; use Illuminate\Support\Arr; use Illuminate\Database\DetectsLostConnections; // that was system class class Connector {// a connector use DetectsLostConnections;// a trait like detects lost connections /** * The default PDO connection options. * * @var array */ protected $options = [ PDO::ATTR_CASE => PDO::CASE_NATURAL, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_ORACLE_NULLS => PDO::NULL_NATURAL, PDO::ATTR_STRINGIFY_FETCHES => false, PDO::ATTR_EMULATE_PREPARES => false, ];// set all this pdo options /** * Get the PDO options based on the configuration. * * @param array $config * @return array */ public function getOptions(array $config) { $options = Arr::get($config, ‘options‘, []);// get configs options default is empty array return array_diff_key($this->options, $options) + $options;// set the new option }// get options /** * Create a new PDO connection. * * @param string $dsn * @param array $config * @param array $options * @return \PDO */ public function createConnection($dsn, array $config, array $options) {// create a new pdo connection. $username = Arr::get($config, ‘username‘);//username $password = Arr::get($config, ‘password‘);// password try { $pdo = new PDO($dsn, $username, $password, $options); } catch (Exception $e) {// try connection this function $pdo = $this->tryAgainIfCausedByLostConnection( $e, $dsn, $username, $password, $options// throw exception ); } return $pdo;// if ok,just return this pdo function } /** * Get the default PDO connection options. * * @return array */ public function getDefaultOptions() { return $this->options; }// get the default Options by this class /** * Set the default PDO connection options. * * @param array $options * @return void */ public function setDefaultOptions(array $options) { $this->options = $options; }// can set the default options in this way /** * Handle a exception that occurred during connect execution. * * @param \Exception $e * @param string $dsn * @param string $username * @param string $password * @param array $options * @return \PDO * * @throws \Exception */ protected function tryAgainIfCausedByLostConnection(Exception $e, $dsn, $username, $password, $options) {//Handle a exception that occurred during connect execution if ($this->causedByLostConnection($e)) { return new PDO($dsn, $username, $password, $options); } throw $e; }// throw $e }
本文出自 “专注php 群号:414194301” 博客,请务必保留此出处http://jingshanls.blog.51cto.com/3357095/1853488
[李景山php]每天laravel-20161119|Connector.php
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。