您的位置:首页 > 编程语言 > PHP开发

[李景山php]每天laravel-20161116|Manager.php

2016-09-16 08:55 211 查看
<?php

namespace Illuminate\Database\Capsule;

use PDO;
use Illuminate\Container\Container;
use Illuminate\Database\DatabaseManager;
use Illuminate\Contracts\Events\Dispatcher;
use Illuminate\Support\Traits\CapsuleManagerTrait;
use Illuminate\Database\Eloquent\Model as Eloquent;
use Illuminate\Database\Connectors\ConnectionFactory;
// get this namespace
class Manager
{//get the Capsule like the
// capsule manager
use CapsuleManagerTrait;// use the Capsule Manager Trait

/**
* The database manager instance.
*
* @var \Illuminate\Database\DatabaseManager
*/
protected $manager;//The database manager instance.

/**
* Create a new database capsule manager.
*
* @param  \Illuminate\Container\Container|null  $container
* @return void
*/
public function __construct(Container $container = null)
{//Create a new database capsule manager.
$this->setupContainer($container ?: new Container);// setup Container
// container get the container

// Once we have the container setup, we will setup the default configuration
// options in the container "config" binding. This will make the database
// manager behave correctly since all the correct binding are in place.
$this->setupDefaultConfiguration();
// Once we have the container setup, we will setup the default configuration
// options in the container "config" binding. This will make the database
// manager behave correctly since all the correct binding are in place.
// setup Default Configuration

$this->setupManager();//setup Manager
}

/**
* Setup the default database configuration options.
*
* @return void
*/
protected function setupDefaultConfiguration()
{//Setup the default database configuration options.
$this->container['config']['database.fetch'] = PDO::FETCH_OBJ;
// PDO::FETCH_OBJ  this container
// set the config

$this->container['config']['database.default'] = 'default';
// default the config
}

/**
* Build the database manager instance.
*
* @return void
*/
protected function setupManager()
{//Build the database manager instance.
$factory = new ConnectionFactory($this->container);// factory get the Connection Factory

$this->manager = new DatabaseManager($this->container, $factory);
//Database Manager
// set the manager
}

/**
* Get a connection instance from the global manager.
*
* @param  string  $connection
* @return \Illuminate\Database\Connection
*/
public static function connection($connection = null)
{//Get a connection instance from the global manager.
return static::$instance->getConnection($connection);
}// return static::$instance->getConnection($connection);
// return the getConnection

/**
* Get a fluent query builder instance.
*
* @param  string  $table
* @param  string  $connection
* @return \Illuminate\Database\Query\Builder
*/
public static function table($table, $connection = null)
{//Get a fluent query builder instance.
return static::$instance->connection($connection)->table($table);
}//instance connection table

/**
* Get a schema builder instance.
*
* @param  string  $connection
* @return \Illuminate\Database\Schema\Builder
*/
public static function schema($connection = null)
{//Get a schema builder instance.
return static::$instance->connection($connection)->getSchemaBuilder();
}// table and the get SchemaBuilder

/**
* Get a registered connection instance.
*
* @param  string  $name
* @return \Illuminate\Database\Connection
*/
public function getConnection($name = null)
{
return $this->manager->connection($name);//connection
}//Get a registered connection instance.

/**
* Register a connection with the manager.
*
* @param  array   $config
* @param  string  $name
* @return void
*/
public function addConnection(array $config, $name = 'default')
{//Register a connection with the manager.
//addConnection
$connections = $this->container['config']['database.connections'];//get the connections

$connections[$name] = $config;//config this connections

$this->container['config']['database.connections'] = $connections;// set the config
}

/**
* Bootstrap Eloquent so it is ready for usage.
*
* @return void
*/
public function bootEloquent()
{//Bootstrap Eloquent so it is ready for usage.
Eloquent::setConnectionResolver($this->manager);//Eloquent::setConnectionResolver(this->mamager)

// If we have an event dispatcher instance, we will go ahead and register it
// with the Eloquent ORM, allowing for model callbacks while creating and
// updating "model" instances; however, if it not necessary to operate.
if ($dispatcher = $this->getEventDispatcher()) {
Eloquent::setEventDispatcher($dispatcher);
}
// If we have an event dispatcher instance, we will go ahead and register it
// with the Eloquent ORM,allowing for model callbacks while creating and
// updating "model" instance; however,if it not necessary to operate.s
}

/**
* Set the fetch mode for the database connections.
*
* @param  int  $fetchMode
* @return $this
*/
public function setFetchMode($fetchMode)
{
$this->container['config']['database.fetch'] = $fetchMode;//set config

return $this;//return the this
}//Set the fetch mode for the database connections

/**
* Get the database manager instance.
*
* @return \Illuminate\Database\DatabaseManager
*/
public function getDatabaseManager()
{
return $this->manager;// set the manager
}//Get the database manager instance.

/**
* Get the current event dispatcher instance.
*
* @return \Illuminate\Contracts\Events\Dispatcher|null
*/
public function getEventDispatcher()
{
if ($this->container->bound('events')) {
return $this->container['events'];//return container
}//getEventDispatcher
}//Get the current event dispatcher instance.

/**
* Set the event dispatcher instance to be used by connections.
*
* @param  \Illuminate\Contracts\Events\Dispatcher  $dispatcher
* @return void
*/
public function setEventDispatcher(Dispatcher $dispatcher)
{
$this->container->instance('events', $dispatcher);// the instance
}//Set the event dispatcher instance to be used by connections

/**
* Dynamically pass methods to the default connection.
*
* @param  string  $method
* @param  array   $parameters
* @return mixed
*/
public static function __callStatic($method, $parameters)
{// callStatic
// call_user_func_array
return call_user_func_array([static::connection(), $method], $parameters);
}//Dynamically pass methods to the default connection.
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: