# user-access-manager/trunk/src/UserGroup/UserGroupFactory.php

User Access Manager, version trunk. 65 lines.

- Page: https://pluginprobe.com/plugins/user-access-manager/trunk/code/src/UserGroup/UserGroupFactory.php
- Raw: https://pluginprobe.com/plugins/user-access-manager/trunk/raw/src/UserGroup/UserGroupFactory.php
- Modified: 2026-08-06T11:11:24+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/user-access-manager/trunk/code/src/UserGroup/UserGroupFactory.php#L10-L20`.

```php
<?php

declare(strict_types=1);

namespace UserAccessManager\UserGroup;

use UserAccessManager\Config\MainConfig;
use UserAccessManager\Database\Database;
use UserAccessManager\Object\ObjectHandler;
use UserAccessManager\Wrapper\Wordpress;

class UserGroupFactory
{
    public function __construct(
        private Wordpress $wordpress,
        private Database $database,
        private MainConfig $config,
        private ObjectHandler $objectHandler,
        private AssignedObjectsLoader $assignedObjectsLoader
    ) {
    }

    /**
     * @throws UserGroupTypeException
     */
    public function createUserGroup(int|string|null $id = null): UserGroup
    {
        return new UserGroup(
            $this->wordpress,
            $this->database,
            $this->config,
            $this->objectHandler,
            $this->assignedObjectsLoader,
            $id
        );
    }

    /**
     * @throws UserGroupTypeException
     */
    public function createUserGroupFromDatabaseRow(object $databaseUserGroup): UserGroup
    {
        $userGroup = $this->createUserGroup();
        $userGroup->assignDatabaseValues($databaseUserGroup);

        return $userGroup;
    }

    /**
     * @throws UserGroupTypeException
     */
    public function createDynamicUserGroup(string $type, int|string $id): DynamicUserGroup
    {
        return new DynamicUserGroup(
            $this->wordpress,
            $this->database,
            $this->config,
            $this->objectHandler,
            $this->assignedObjectsLoader,
            $type,
            $id
        );
    }
}

```
