Class yii\mongodb\ClientSession
Inheritance | yii\mongodb\ClientSession » yii\base\BaseObject |
---|---|
Implements | yii\base\Configurable |
Source Code | https://github.com/yiisoft/yii2-mongodb/blob/master/ClientSession.php |
ClientSession represents a client session and Commands, queries, and write operations may then be associated the session.
See also:
- https://docs.mongodb.com/manual/release-notes/3.6/#client-sessions Note : The minimum supported version of mongodb php driver is 1.4.0 Note : The minimum supported version of MongoDB server is 3.6.
- https://github.com/mongodb/mongo-php-driver/releases/tag/1.4.0
- https://docs.mongodb.com/ecosystem/drivers/php/#mongodb-compatibility
Public Properties
Property | Type | Description | Defined By |
---|---|---|---|
$db | yii\mongodb\Connection | The database connection that this transaction is associated with. | yii\mongodb\ClientSession |
$id | string | yii\mongodb\ClientSession | |
$inTransaction | boolean | yii\mongodb\ClientSession | |
$mongoSession | \yii\mongodb\MongoDB\Driver\Session | Class represents a client session and Commands, queries, and write operations may then be associated the session. | yii\mongodb\ClientSession |
$transaction | yii\mongodb\Transaction | Returns current transaction. | yii\mongodb\ClientSession |
Public Methods
Method | Description | Defined By |
---|---|---|
__call() | Calls the named method which is not a class method. | yii\base\BaseObject |
__construct() | Constructor. | yii\base\BaseObject |
__get() | Returns the value of an object property. | yii\base\BaseObject |
__isset() | Checks if a property is set, i.e. defined and not null. | yii\base\BaseObject |
__set() | Sets value of an object property. | yii\base\BaseObject |
__unset() | Sets an object property to null. | yii\base\BaseObject |
canGetProperty() | Returns a value indicating whether a property can be read. | yii\base\BaseObject |
canSetProperty() | Returns a value indicating whether a property can be set. | yii\base\BaseObject |
className() | Returns the fully qualified name of this class. | yii\base\BaseObject |
end() | Ends the current session. | yii\mongodb\ClientSession |
getId() | Returns the logical session ID as string for this session, which may be used to identify this session's operations on the server. | yii\mongodb\ClientSession |
getInTransaction() | Returns true if the transaction is in progress | yii\mongodb\ClientSession |
getTransaction() | Gets a current transaction of session or creates a new transaction once | yii\mongodb\ClientSession |
hasMethod() | Returns a value indicating whether a method is defined. | yii\base\BaseObject |
hasProperty() | Returns a value indicating whether a property is defined. | yii\base\BaseObject |
init() | Initializes the object. | yii\base\BaseObject |
prepareOptions() | Prepares options for some purposes | yii\mongodb\ClientSession |
start() | Starts a new mongodb session in a connection. | yii\mongodb\ClientSession |
Property Details
The database connection that this transaction is associated with.
Class represents a client session and Commands, queries, and write operations may then be associated the session.
See also https://www.php.net/manual/en/class.mongodb-driver-session.php.
Returns current transaction.
Method Details
Defined in: yii\base\BaseObject::__call()
Calls the named method which is not a class method.
Do not call this method directly as it is a PHP magic method that will be implicitly called when an unknown method is being invoked.
public mixed __call ( $name, $params ) | ||
$name | string |
The method name |
$params | array |
Method parameters |
return | mixed |
The method return value |
---|---|---|
throws | yii\base\UnknownMethodException |
when calling unknown method |
public function __call($name, $params)
{
throw new UnknownMethodException('Calling unknown method: ' . get_class($this) . "::$name()");
}
Defined in: yii\base\BaseObject::__construct()
Constructor.
The default implementation does two things:
- Initializes the object with the given configuration
$config
. - Call init().
If this method is overridden in a child class, it is recommended that
- the last parameter of the constructor is a configuration array, like
$config
here. - call the parent implementation at the end of the constructor.
public void __construct ( $config = [] ) | ||
$config | array |
Name-value pairs that will be used to initialize the object properties |
public function __construct($config = [])
{
if (!empty($config)) {
Yii::configure($this, $config);
}
$this->init();
}
Defined in: yii\base\BaseObject::__get()
Returns the value of an object property.
Do not call this method directly as it is a PHP magic method that
will be implicitly called when executing $value = $object->property;
.
See also __set().
public mixed __get ( $name ) | ||
$name | string |
The property name |
return | mixed |
The property value |
---|---|---|
throws | yii\base\UnknownPropertyException |
if the property is not defined |
throws | yii\base\InvalidCallException |
if the property is write-only |
public function __get($name)
{
$getter = 'get' . $name;
if (method_exists($this, $getter)) {
return $this->$getter();
} elseif (method_exists($this, 'set' . $name)) {
throw new InvalidCallException('Getting write-only property: ' . get_class($this) . '::' . $name);
}
throw new UnknownPropertyException('Getting unknown property: ' . get_class($this) . '::' . $name);
}
Defined in: yii\base\BaseObject::__isset()
Checks if a property is set, i.e. defined and not null.
Do not call this method directly as it is a PHP magic method that
will be implicitly called when executing isset($object->property)
.
Note that if the property is not defined, false will be returned.
public boolean __isset ( $name ) | ||
$name | string |
The property name or the event name |
return | boolean |
Whether the named property is set (not null). |
---|
public function __isset($name)
{
$getter = 'get' . $name;
if (method_exists($this, $getter)) {
return $this->$getter() !== null;
}
return false;
}
Defined in: yii\base\BaseObject::__set()
Sets value of an object property.
Do not call this method directly as it is a PHP magic method that
will be implicitly called when executing $object->property = $value;
.
See also __get().
public void __set ( $name, $value ) | ||
$name | string |
The property name or the event name |
$value | mixed |
The property value |
throws | yii\base\UnknownPropertyException |
if the property is not defined |
---|---|---|
throws | yii\base\InvalidCallException |
if the property is read-only |
public function __set($name, $value)
{
$setter = 'set' . $name;
if (method_exists($this, $setter)) {
$this->$setter($value);
} elseif (method_exists($this, 'get' . $name)) {
throw new InvalidCallException('Setting read-only property: ' . get_class($this) . '::' . $name);
} else {
throw new UnknownPropertyException('Setting unknown property: ' . get_class($this) . '::' . $name);
}
}
Defined in: yii\base\BaseObject::__unset()
Sets an object property to null.
Do not call this method directly as it is a PHP magic method that
will be implicitly called when executing unset($object->property)
.
Note that if the property is not defined, this method will do nothing. If the property is read-only, it will throw an exception.
public void __unset ( $name ) | ||
$name | string |
The property name |
throws | yii\base\InvalidCallException |
if the property is read only. |
---|
public function __unset($name)
{
$setter = 'set' . $name;
if (method_exists($this, $setter)) {
$this->$setter(null);
} elseif (method_exists($this, 'get' . $name)) {
throw new InvalidCallException('Unsetting read-only property: ' . get_class($this) . '::' . $name);
}
}
Defined in: yii\base\BaseObject::canGetProperty()
Returns a value indicating whether a property can be read.
A property is readable if:
- the class has a getter method associated with the specified name (in this case, property name is case-insensitive);
- the class has a member variable with the specified name (when
$checkVars
is true);
See also canSetProperty().
public boolean canGetProperty ( $name, $checkVars = true ) | ||
$name | string |
The property name |
$checkVars | boolean |
Whether to treat member variables as properties |
return | boolean |
Whether the property can be read |
---|
public function canGetProperty($name, $checkVars = true)
{
return method_exists($this, 'get' . $name) || $checkVars && property_exists($this, $name);
}
Defined in: yii\base\BaseObject::canSetProperty()
Returns a value indicating whether a property can be set.
A property is writable if:
- the class has a setter method associated with the specified name (in this case, property name is case-insensitive);
- the class has a member variable with the specified name (when
$checkVars
is true);
See also canGetProperty().
public boolean canSetProperty ( $name, $checkVars = true ) | ||
$name | string |
The property name |
$checkVars | boolean |
Whether to treat member variables as properties |
return | boolean |
Whether the property can be written |
---|
public function canSetProperty($name, $checkVars = true)
{
return method_exists($this, 'set' . $name) || $checkVars && property_exists($this, $name);
}
::class
instead.
Defined in: yii\base\BaseObject::className()
Returns the fully qualified name of this class.
public static string className ( ) | ||
return | string |
The fully qualified name of this class. |
---|
public static function className()
{
return get_called_class();
}
Ends the current session.
public void end ( ) |
public function end()
{
$this->mongoSession->endSession();
$this->db->trigger(Connection::EVENT_END_SESSION);
}
Returns the logical session ID as string for this session, which may be used to identify this session's operations on the server.
See also https://www.php.net/manual/en/mongodb-driver-session.getlogicalsessionid.php.
public string getId ( ) |
public function getId()
{
return $this->mongoSession->getLogicalSessionId()->id->jsonSerialize()['$binary'];
}
Returns true if the transaction is in progress
public boolean getInTransaction ( ) |
public function getInTransaction()
{
return $this->mongoSession->isInTransaction();
}
Gets a current transaction of session or creates a new transaction once
public yii\mongodb\Transaction getTransaction ( ) | ||
return | yii\mongodb\Transaction |
Returns current transaction |
---|
public function getTransaction()
{
if ($this->_transaction === null) {
return $this->_transaction = new Transaction(['clientSession' => $this]);
}
return $this->_transaction;
}
Defined in: yii\base\BaseObject::hasMethod()
Returns a value indicating whether a method is defined.
The default implementation is a call to php function method_exists()
.
You may override this method when you implemented the php magic method __call()
.
public boolean hasMethod ( $name ) | ||
$name | string |
The method name |
return | boolean |
Whether the method is defined |
---|
public function hasMethod($name)
{
return method_exists($this, $name);
}
Defined in: yii\base\BaseObject::hasProperty()
Returns a value indicating whether a property is defined.
A property is defined if:
- the class has a getter or setter method associated with the specified name (in this case, property name is case-insensitive);
- the class has a member variable with the specified name (when
$checkVars
is true);
See also:
public boolean hasProperty ( $name, $checkVars = true ) | ||
$name | string |
The property name |
$checkVars | boolean |
Whether to treat member variables as properties |
return | boolean |
Whether the property is defined |
---|
public function hasProperty($name, $checkVars = true)
{
return $this->canGetProperty($name, $checkVars) || $this->canSetProperty($name, false);
}
Defined in: yii\base\BaseObject::init()
Initializes the object.
This method is invoked at the end of the constructor after the object is initialized with the given configuration.
public void init ( ) |
public function init()
{
}
Prepares options for some purposes
public static void prepareOptions ( &$options ) | ||
$options |
public static function prepareOptions(&$options)
{
if (array_key_exists('defaultTransactionOptions', $options)) {
//convert readConcern
if (
array_key_exists('readConcern', $options['defaultTransactionOptions']) &&
is_string($options['defaultTransactionOptions']['readConcern'])
) {
$options['defaultTransactionOptions']['readConcern'] = new ReadConcern($options['defaultTransactionOptions']['readConcern']);
}
//convert writeConcern
if (array_key_exists('writeConcern',$options['defaultTransactionOptions'])) {
if (
is_string($options['defaultTransactionOptions']['writeConcern']) ||
is_int($options['defaultTransactionOptions']['writeConcern'])
) {
$options['defaultTransactionOptions']['writeConcern'] = new WriteConcern($options['defaultTransactionOptions']['writeConcern']);
} elseif (is_array($options['defaultTransactionOptions']['writeConcern'])) {
$options['defaultTransactionOptions']['writeConcern'] =
(new \ReflectionClass('\MongoDB\Driver\WriteConcern'))
->newInstanceArgs(
$options['defaultTransactionOptions']['writeConcern']
)
;
}
}
//Convert readPreference
if (array_key_exists('readPreference',$options['defaultTransactionOptions'])) {
if (is_string($options['defaultTransactionOptions']['readPreference'])) {
$options['defaultTransactionOptions']['readPreference'] = new ReadPreference($options['defaultTransactionOptions']['readPreference']);
} else if(is_array($options['defaultTransactionOptions']['readPreference'])) {
$options['defaultTransactionOptions']['readPreference'] =
(new \ReflectionClass('\MongoDB\Driver\ReadPreference'))
->newInstanceArgs(
$options['defaultTransactionOptions']['readPreference']
)
;
}
}
}
}
Starts a new mongodb session in a connection.
public static yii\mongodb\ClientSession start ( $db, $sessionOptions = [] ) | ||
$db | yii\mongodb\Connection | |
$sessionOptions | array |
Creates a ClientSession for the given options {@see https://www.php.net/manual/en/mongodb-driver-manager.startsession.php#refsect1-mongodb-driver-manager.startsession-parameters} |
return | yii\mongodb\ClientSession |
Returns new session base on a session options for the given connection |
---|
public static function start($db, $sessionOptions = [])
{
self::prepareOptions($sessionOptions);
if ($db->enableProfiling) {
Yii::debug('Starting mongodb session ...', __METHOD__);
}
$db->trigger(Connection::EVENT_START_SESSION);
$newSession = new self([
'db' => $db,
'mongoSession' => $db->manager->startSession($sessionOptions),
]);
if ($db->enableProfiling) {
Yii::debug('MongoDB session started.', __METHOD__);
}
return $newSession;
}