Class yii\mongodb\ClientSession
| Inheritance | yii\ |
|---|---|
| Implements | yii\ |
| 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\ |
The database connection that this transaction is associated with. | yii\ |
| $id | string | yii\ |
|
| $inTransaction | boolean | yii\ |
|
| $mongoSession | \yii\mongodb\MongoDB\Driver\Session | Class represents a client session and Commands, queries, and write operations may then be associated the session. | yii\ |
| $transaction | yii\ |
Returns current transaction. | yii\ |
Public Methods
| Method | Description | Defined By |
|---|---|---|
| __call() | Calls the named method which is not a class method. | yii\ |
| __construct() | Constructor. | yii\ |
| __get() | Returns the value of an object property. | yii\ |
| __isset() | Checks if a property is set, i.e. defined and not null. | yii\ |
| __set() | Sets value of an object property. | yii\ |
| __unset() | Sets an object property to null. | yii\ |
| canGetProperty() | Returns a value indicating whether a property can be read. | yii\ |
| canSetProperty() | Returns a value indicating whether a property can be set. | yii\ |
| className() | Returns the fully qualified name of this class. | yii\ |
| end() | Ends the current session. | yii\ |
| 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\ |
| getInTransaction() | Returns true if the transaction is in progress | yii\ |
| getTransaction() | Gets a current transaction of session or creates a new transaction once | yii\ |
| hasMethod() | Returns a value indicating whether a method is defined. | yii\ |
| hasProperty() | Returns a value indicating whether a property is defined. | yii\ |
| init() | Initializes the object. | yii\ |
| prepareOptions() | Prepares options for some purposes | yii\ |
| start() | Starts a new mongodb session in a connection. | yii\ |
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\
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 __call( string $name, array $params ): mixed | ||
| $name | string |
The method name |
| $params | array |
Method parameters |
| return | mixed |
The method return value |
|---|---|---|
| throws | yii\ |
when calling unknown method |
public function __call($name, $params)
{
throw new UnknownMethodException('Calling unknown method: ' . get_class($this) . "::$name()");
}
Defined in:
yii\
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
$confighere. - call the parent implementation at the end of the constructor.
| public __construct( array<string, mixed> $config = [] ): mixed | ||
| $config | array<string, mixed> |
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\
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 __get( string $name ): mixed | ||
| $name | string |
The property name |
| return | mixed |
The property value |
|---|---|---|
| throws | yii\ |
if the property is not defined |
| throws | yii\ |
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\
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 __isset( string $name ): boolean | ||
| $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\
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 __set( string $name, mixed $value ): mixed | ||
| $name | string |
The property name or the event name |
| $value | mixed |
The property value |
| throws | yii\ |
if the property is not defined |
|---|---|---|
| throws | yii\ |
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\
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 __unset( string $name ): mixed | ||
| $name | string |
The property name |
| throws | yii\ |
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\
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
$checkVarsis true);
See also canSetProperty().
| public canGetProperty( string $name, boolean $checkVars = true ): boolean | ||
| $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\
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
$checkVarsis true);
See also canGetProperty().
| public canSetProperty( string $name, boolean $checkVars = true ): boolean | ||
| $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\
Returns the fully qualified name of this class.
| public static className( ): string | ||
| return | string |
The fully qualified name of this class. |
|---|---|---|
public static function className()
{
return get_called_class();
}
Ends the current session.
| public end( ): mixed |
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 getId( ): string |
public function getId()
{
return $this->mongoSession->getLogicalSessionId()->id->jsonSerialize()['$binary'];
}
Returns true if the transaction is in progress
| public getInTransaction( ): boolean |
public function getInTransaction()
{
return $this->mongoSession->isInTransaction();
}
Gets a current transaction of session or creates a new transaction once
| public getTransaction( ): yii\ | ||
| return | yii\ |
Returns current transaction |
|---|---|---|
public function getTransaction()
{
if ($this->_transaction === null) {
return $this->_transaction = new Transaction(['clientSession' => $this]);
}
return $this->_transaction;
}
Defined in:
yii\
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 hasMethod( string $name ): boolean | ||
| $name | string |
The method name |
| return | boolean |
Whether the method is defined |
|---|---|---|
public function hasMethod($name)
{
return method_exists($this, $name);
}
Defined in:
yii\
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
$checkVarsis true);
See also:
| public hasProperty( string $name, boolean $checkVars = true ): boolean | ||
| $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\
Initializes the object.
This method is invoked at the end of the constructor after the object is initialized with the given configuration.
| public init( ): mixed |
public function init()
{
}
Prepares options for some purposes
| public static prepareOptions( mixed & $options ): mixed | ||
| $options | mixed | |
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']);
} elseif (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 start( yii\ | ||
| $db | yii\ |
|
| $sessionOptions | array |
Creates a ClientSession for the given options https://www.php.net/manual/en/mongodb-driver-manager.startsession.php#refsect1-mongodb-driver-manager.startsession-parameters |
| return | yii\ |
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;
}