Final Class Yiisoft\Rbac\Db\ItemTreeTraversal\ItemTreeTraversalFactory
| Inheritance | Yiisoft\Rbac\Db\ItemTreeTraversal\ItemTreeTraversalFactory |
|---|
A factory for creating item tree traversal strategy depending on used RDBMS.
Public Methods
| Method | Description | Defined By |
|---|---|---|
| getItemTreeTraversal() | Creates item tree traversal strategy depending on used RDBMS. | Yiisoft\Rbac\Db\ItemTreeTraversal\ItemTreeTraversalFactory |
Method Details
Creates item tree traversal strategy depending on used RDBMS.
| public static getItemTreeTraversal( \Yiisoft\Db\Connection\ConnectionInterface $database, string $tableName, string $childrenTableName, string $namesSeparator ): Yiisoft\Rbac\Db\ItemTreeTraversal\ItemTreeTraversalInterface | ||
| $database | \Yiisoft\Db\Connection\ConnectionInterface |
Yii Database connection instance. |
| $tableName | string |
A name of the table for storing RBAC items. |
| $childrenTableName | string |
A name of the table for storing relations between RBAC items. |
| $namesSeparator | string |
Separator used for joining item names. |
| return | Yiisoft\Rbac\Db\ItemTreeTraversal\ItemTreeTraversalInterface |
Item tree traversal strategy. |
|---|---|---|
| throws | RuntimeException |
When a database was configured with an unknown driver, either because it is not supported by Yii Database out of the box or newly added by Yii Database and not supported / tested yet in this package. |
public static function getItemTreeTraversal(
ConnectionInterface $database,
string $tableName,
string $childrenTableName,
string $namesSeparator,
): ItemTreeTraversalInterface {
$arguments = [$database, $tableName, $childrenTableName, $namesSeparator];
$driver = $database->getDriverName();
// default - ignored due to the complexity of testing and preventing splitting of database argument.
// @codeCoverageIgnoreStart
return match ($driver) {
'sqlite' => new SqliteCteItemTreeTraversal(...$arguments),
'mysql' => self::getMysqlItemTreeTraversal($database, $tableName, $childrenTableName, $namesSeparator),
'pgsql' => new PostgresCteItemTreeTraversal(...$arguments),
'sqlsrv' => new MssqlCteItemTreeTraversal(...$arguments),
'oci' => new OracleCteItemTreeTraversal(...$arguments),
default => throw new RuntimeException("$driver database driver is not supported."),
};
// @codeCoverageIgnoreEnd
}
Signup or Login in order to comment.