PHPackages                             pixxel/session - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. pixxel/session

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

pixxel/session
==============

PHP library for handling sessions.

v2.0.3(3y ago)01411MITPHPPHP ^8.0

Since Jan 17Pushed 3y agoCompare

[ Source](https://github.com/pixxelfactory/session)[ Packagist](https://packagist.org/packages/pixxel/session)[ GitHub Sponsors](https://github.com/Josantonius)[ RSS](/packages/pixxel-session/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (1)Dependencies (3)Versions (16)Used By (1)

PHP Session library
===================

[](#php-session-library)

A fork from the great library from josantonius, check him out here:

Did a fork to have our namespace across our own libraries and his.

PHP library for handling sessions.

> Version 1.x is considered as deprecated and unsupported. In this version (2.x) the library was completely restructured. It is recommended to review the documentation for this version and make the necessary changes before starting to use it, as it not be compatible with version 1.x.

---

- [Requirements](#requirements)
- [Installation](#installation)
- [Available Methods](#available-methods)
- [Quick Start](#quick-start)
- [Usage](#usage)
- [Tests](#tests)
- [TODO](#todo)
- [Changelog](#changelog)
- [Contribution](#contribution)
- [Sponsor](#Sponsor)
- [License](#license)

---

Requirements
------------

[](#requirements)

This library is compatible with the PHP versions: 8.0 | 8.1.

Installation
------------

[](#installation)

The preferred way to install this extension is through [Composer](http://getcomposer.org/download/).

To install **PHP Session library**, simply:

```
composer require pixxel/session
```

The previous command will only install the necessary files, if you prefer to **download the entire source code** you can use:

```
composer require pixxel/session --prefer-source
```

You can also **clone the complete repository** with Git:

```
git clone https://github.com/pixxelfactory/session.git
```

Available Methods
-----------------

[](#available-methods)

Available methods in this library:

### Starts the session

[](#starts-the-session)

```
$session->start(array $options = []);
```

**@see** for List of available `$options` and their default values

**@throws** `SessionException` If headers already sent

**@throws** `SessionException` If session already started

**@throws** `SessionException` If setting options failed

**@Return** `bool`

### Check if the session is started

[](#check-if-the-session-is-started)

```
$session->isStarted();
```

**@Return** `bool`

### Sets an attribute by name

[](#sets-an-attribute-by-name)

```
$session->set(string $name, mixed $value = null);
```

**@throws** `SessionException` If session is unstarted

**@Return** `void`

### Gets an attribute by name

[](#gets-an-attribute-by-name)

Optionally defines a default value when the attribute does not exist.

```
$session->get(string $name, mixed $default = null);
```

**@Return** `mixed` Value

### Gets all attributes

[](#gets-all-attributes)

```
$session->all();
```

**@Return** `array` $\_SESSION content

### Check if an attribute exists in the session

[](#check-if-an-attribute-exists-in-the-session)

```
$session->has(string $name);
```

**@Return** `bool`

### Sets several attributes at once

[](#sets-several-attributes-at-once)

If attributes exist they are replaced, if they do not exist they are created.

```
$session->replace(array $data);
```

**@throws** `SessionException` If session is unstarted

**@Return** `void`

### Deletes an attribute by name and returns its value

[](#deletes-an-attribute-by-name-and-returns-its-value)

Optionally defines a default value when the attribute does not exist.

```
$session->pull(string $name, mixed $default = null);
```

**@throws** `SessionException` If session is unstarted

**@Return** `mixed` Attribute value

### Deletes an attribute by name

[](#deletes-an-attribute-by-name)

```
$session->remove(string $name);
```

**@throws** `SessionException` If session is unstarted

**@Return** `void`

### Free all session variables

[](#free-all-session-variables)

```
$session->clear();
```

**@throws** `SessionException` If session is unstarted

**@Return** `void`

### Gets the session ID

[](#gets-the-session-id)

```
$session->getId();
```

**@Return** `string` Session ID

### Sets the session ID

[](#sets-the-session-id)

```
$session->setId(string $sessionId);
```

**@throws** `SessionException` If session already started

**@Return** `void`

### Update the current session id with a newly generated one

[](#update-the-current-session-id-with-a-newly-generated-one)

```
$session->regenerateId(bool $deleteOldSession = false);
```

**@throws** `SessionException` If session is unstarted

**@Return** `bool`

### Gets the session name

[](#gets-the-session-name)

```
$session->getName();
```

**@Return** `string` Session name

### Sets the session name

[](#sets-the-session-name)

```
$session->setName(string $name);
```

**@throws** `SessionException` If session already started

**@Return** `void`

### Destroys the session

[](#destroys-the-session)

```
$session->destroy();
```

**@throws** `SessionException` If session is unstarted

**@Return** `bool`

Quick Start
-----------

[](#quick-start)

To use this library with **Composer**:

```
use Pixxel\Session;

$session = new Session();
```

Or instead you can use a facade to access the methods statically:

```
use Pixxel\Facades\Session;
```

Usage
-----

[](#usage)

Example of use for this library:

### - Starts the session

[](#--starts-the-session)

Without setting options:

```
$session->start();
```

Setting options:

```
$session->start([
    // 'cache_expire' => 180,
    // 'cache_limiter' => 'nocache',
    // 'cookie_domain' => '',
    'cookie_httponly' => true,
    'cookie_lifetime' => 8000,
    // 'cookie_path' => '/',
    'cookie_samesite' => 'Strict',
    'cookie_secure'   => true,
    // 'gc_divisor' => 100,
    // 'gc_maxlifetime' => 1440,
    // 'gc_probability' => true,
    // 'lazy_write' => true,
    // 'name' => 'PHPSESSID',
    // 'read_and_close' => false,
    // 'referer_check' => '',
    // 'save_handler' => 'files',
    // 'save_path' => '',
    // 'serialize_handler' => 'php',
    // 'sid_bits_per_character' => 4,
    // 'sid_length' => 32,
    // 'trans_sid_hosts' => $_SERVER['HTTP_HOST'],
    // 'trans_sid_tags' => 'a=href,area=href,frame=src,form=',
    // 'use_cookies' => true,
    // 'use_only_cookies' => true,
    // 'use_strict_mode' => false,
    // 'use_trans_sid' => false,
]);
```

Using the facade:

```
Session::start();
```

### - Check if the session is started

[](#--check-if-the-session-is-started)

Using session object:

```
$session->isStarted();
```

Using the facade:

```
Session::isStarted();
```

### - Sets an attribute by name

[](#--sets-an-attribute-by-name)

Using session object:

```
$session->set('foo', 'bar');
```

Using the facade:

```
Session::set('foo', 'bar');
```

### - Gets an attribute by name

[](#--gets-an-attribute-by-name)

Without default value if attribute does not exist:

```
$session->get('foo'); // null if attribute does not exist
```

With default value if attribute does not exist:

```
$session->get('foo', false); // false if attribute does not exist
```

Using the facade:

```
Session::get('foo');
```

### - Gets all attributes

[](#--gets-all-attributes)

Using session object:

```
$session->all();
```

Using the facade:

```
Session::all();
```

### - Check if an attribute exists in the session

[](#--check-if-an-attribute-exists-in-the-session)

Using session object:

```
$session->has('foo');
```

Using the facade:

```
Session::has('foo');
```

### - Sets several attributes at once

[](#--sets-several-attributes-at-once)

Using session object:

```
$session->replace(['foo' => 'bar', 'bar' => 'foo']);
```

Using the facade:

```
Session::replace(['foo' => 'bar', 'bar' => 'foo']);
```

### - Deletes an attribute by name and returns its value

[](#--deletes-an-attribute-by-name-and-returns-its-value)

Without default value if attribute does not exist:

```
$session->pull('foo'); // null if attribute does not exist
```

With default value if attribute does not exist:

```
$session->pull('foo', false); // false if attribute does not exist
```

Using the facade:

```
Session::pull('foo');
```

### - Deletes an attribute by name

[](#--deletes-an-attribute-by-name)

Using session object:

```
$session->remove('foo');
```

Using the facade:

```
Session::remove('foo');
```

### - Free all session variables

[](#--free-all-session-variables)

Using session object:

```
$session->clear();
```

Using the facade:

```
Session::clear();
```

### - Gets the session ID

[](#--gets-the-session-id)

Using session object:

```
$session->getId();
```

Using the facade:

```
Session::getId();
```

### - Sets the session ID

[](#--sets-the-session-id)

Using session object:

```
$session->setId('foo');
```

Using the facade:

```
Session::setId('foo');
```

### - Update the current session id with a newly generated one

[](#--update-the-current-session-id-with-a-newly-generated-one)

Regenerate ID without deleting the old session:

```
$session->regenerateId();
```

Regenerate ID by deleting the old session:

```
$session->regenerateId(true);
```

Using the facade:

```
Session::regenerateId();
```

### - Gets the session name

[](#--gets-the-session-name)

Using session object:

```
$session->getName();
```

Using the facade:

```
Session::getName();
```

### - Sets the session name

[](#--sets-the-session-name)

Using session object:

```
$session->setName('foo');
```

Using the facade:

```
Session::setName('foo');
```

### - Destroys the session

[](#--destroys-the-session)

Using session object:

```
$session->destroy();
```

Using the facade:

```
Session::destroy();
```

Tests
-----

[](#tests)

To run [tests](tests) you just need [composer](http://getcomposer.org/download/) and to execute the following:

```
git clone https://github.com/pixxelfactory/session.git
```

```
cd session
```

```
composer install
```

Run unit tests with [PHPUnit](https://phpunit.de/):

```
composer phpunit
```

Run code standard tests with [PHPCS](https://github.com/squizlabs/PHP_CodeSniffer):

```
composer phpcs
```

Run [PHP Mess Detector](https://phpmd.org/) tests to detect inconsistencies in code style:

```
composer phpmd
```

Run all previous tests:

```
composer tests
```

TODO
----

[](#todo)

- Add new feature
- Improve tests
- Improve documentation
- Improve English translation in the README file
- Refactor code for disabled code style rules. See [phpmd.xml](phpmd.xml) and [phpcs.xml](phpcs.xml)
- Show an example of renewing the session lifetime
- Feature to enable/disable exceptions?
- Feature to add prefixes in session attributes?

Changelog
---------

[](#changelog)

Detailed changes for each release are documented in the [release notes](https://github.com/pixxelfactory/session/releases).

Contribution
------------

[](#contribution)

Please make sure to read the [Contributing Guide](.github/CONTRIBUTING.md), before making a pull request, start a discussion or report a issue.

Thanks to all [contributors](https://github.com/pixxelfactory/session/graphs/contributors)! ❤️

Sponsor
-------

[](#sponsor)

If this project helps you to reduce your development time, [you can sponsor Josantonius](https://github.com/josantonius#sponsor) to support my open source work 😊

License
-------

[](#license)

This repository is licensed under the [MIT License](LICENSE).

Copyright © 2017-present, [Josantonius](https://github.com/josantonius#contact)

###  Health Score

32

—

LowBetter than 72% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity7

Limited adoption so far

Community15

Small or concentrated contributor base

Maturity76

Established project with proven stability

 Bus Factor1

Top contributor holds 89.6% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~154 days

Recently: every ~5 days

Total

14

Last Release

1407d ago

Major Versions

1.1.9 → 2.0.02022-06-27

PHP version history (3 changes)1.0.0PHP &gt;=7.0

1.1.1PHP ^5.6 || ^7.0

2.0.0PHP ^8.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/dddd97de23d5d7def157effbc39845229ff52ade1bb6101b1b507e6507590191?d=identicon)[afpixxelfactory](/maintainers/afpixxelfactory)

---

Top Contributors

[![josantonius](https://avatars.githubusercontent.com/u/18104336?v=4)](https://github.com/josantonius "josantonius (69 commits)")[![chrisrowley14](https://avatars.githubusercontent.com/u/12914881?v=4)](https://github.com/chrisrowley14 "chrisrowley14 (3 commits)")[![owenvoke](https://avatars.githubusercontent.com/u/1899334?v=4)](https://github.com/owenvoke "owenvoke (2 commits)")[![pixxelfactory](https://avatars.githubusercontent.com/u/5260552?v=4)](https://github.com/pixxelfactory "pixxelfactory (2 commits)")[![peter279k](https://avatars.githubusercontent.com/u/9021747?v=4)](https://github.com/peter279k "peter279k (1 commits)")

---

Tags

phpsession

###  Code Quality

TestsPHPUnit

Code StylePHP\_CodeSniffer

### Embed Badge

![Health badge](/badges/pixxel-session/health.svg)

```
[![Health](https://phpackages.com/badges/pixxel-session/health.svg)](https://phpackages.com/packages/pixxel-session)
```

###  Alternatives

[rcastera/session

Session Class

222.2k](/packages/rcastera-session)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
