---
title: "How to use bitsets"
manual: "TYPO3 Explained"
version: "13.4"
permalink: "https://docs.typo3.org/permalink/t3coreapi:bitset@13.4"
source: "ApiOverview/BitSets/BitSet.rst"
rendered: "2026-09-26T10:27:18+00:00"
---

# How to use bitsets {#bitset}

Bitsets are used to handle boolean flags efficiently.

The class `\TYPO3\CMS\Core\Type\BitSet` provides a TYPO3 implementation of
a bitset. It can be used standalone and accessed from the outside, but we
recommend creating specific bitset classes that extend the TYPO3
`BitSet` class.

The functionality is best described by an example:

```php
<?php

declare(strict_types=1);

use TYPO3\CMS\Core\Type\BitSet;

define('PERMISSIONS_NONE', 0b0); // 0
define('PERMISSIONS_PAGE_SHOW', 0b1); // 1
define('PERMISSIONS_PAGE_EDIT', 0b10); // 2
define('PERMISSIONS_PAGE_DELETE', 0b100); // 4
define('PERMISSIONS_PAGE_NEW', 0b1000); // 8
define('PERMISSIONS_CONTENT_EDIT', 0b10000); // 16
define('PERMISSIONS_ALL', 0b11111); // 31

$bitSet = new BitSet(PERMISSIONS_PAGE_SHOW | PERMISSIONS_PAGE_NEW);
$bitSet->get(PERMISSIONS_PAGE_SHOW); // true
$bitSet->get(PERMISSIONS_CONTENT_EDIT); // false

```

The example above uses global constants. Implementing that via an
extended bitset class makes it clearer and easier to use:

**EXT:my_extension/Classes/Bitmask/Permissions.php**

```php
<?php

declare(strict_types=1);

namespace MyVendor\MyExtension\Bitmask;

use TYPO3\CMS\Core\Type\BitSet;

final class Permissions extends BitSet
{
  public const NONE = 0b0; // 0
  public const PAGE_SHOW = 0b1; // 1
  public const PAGE_EDIT = 0b10; // 2
  public const PAGE_DELETE = 0b100; // 4
  public const PAGE_NEW = 0b1000; // 8
  public const CONTENT_EDIT = 0b10000; // 16
  public const ALL = 0b11111; // 31

  public function hasPermission(int $permission): bool
  {
    return $this->get($permission);
  }

  public function hasAllPermissions(): bool
  {
    return $this->get(self::ALL);
  }

  public function allow(int $permission): void
  {
    $this->set($permission);
  }
}

```

Then use your custom bitset class:

```php
<?php

declare(strict_types=1);

use MyVendor\MyExtension\Bitmask\Permissions;

$permissions = new Permissions(Permissions::PAGE_SHOW | Permissions::PAGE_NEW);
$permissions->hasPermission(Permissions::PAGE_SHOW); // true
$permissions->hasPermission(Permissions::CONTENT_EDIT); // false

```
