2017 © Pedro Peláez
 

library cookie

PHP library for handling cookies.

image

josantonius/cookie

PHP library for handling cookies.

  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 4 Forks
  • 0 Open issues
  • 9 Versions
  • 21 % Grown

The README.md

PHP Cookie library

Latest Stable Version License Total Downloads CI CodeCov PSR1 PSR4 PSR12, (*1)

Translations: Español, (*2)

PHP library for handling cookies., (*3)



Requirements

  • Operating System: Linux., (*4)

  • PHP versions: 8.1 | 8.2 | 8.3., (*5)

Installation

The preferred way to install this extension is through Composer., (*6)

To install PHP Cookie library, simply:, (*7)

composer require josantonius/cookie

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

composer require josantonius/cookie --prefer-source

You can also clone the complete repository with Git:, (*9)

git clone https://github.com/josantonius/php-cookie.git

Available Classes

Josantonius\Cookie\Cookie, (*10)

Sets cookie options:, (*11)

/**
 * Cookie options:
 * 
 * domain:   Domain for which the cookie is available.
 * expires:  The time the cookie will expire.
 * httpOnly: If cookie will only be available through the HTTP protocol.
 * path:     Path for which the cookie is available.
 * raw:      If cookie will be sent as a raw string.
 * sameSite: Enforces the use of a Lax or Strict SameSite policy.
 * secure:   If cookie will only be available through the HTTPS protocol.
 * 
 * These settings will be used to create and delete cookies.
 * 
 * @throws CookieException if $sameSite value is wrong.
 *
 * @see https://www.php.net/manual/en/datetime.formats.php for date formats.
 * @see https://www.php.net/manual/en/function.setcookie.php for more information.
 */
public function __construct(
    private string              $domain   = '',
    private int|string|DateTime $expires  = 0,
    private bool                $httpOnly = false,
    private string              $path     = '/',
    private bool                $raw      = false,
    private null|string         $sameSite = null,
    private bool                $secure   = false
);

Sets a cookie by name:, (*12)

/**
 * @throws CookieException if headers already sent.
 * @throws CookieException if failure in date/time string analysis.
 */
public function set(
    string $name,
    mixed $value,
    null|int|string|DateTime $expires = null
): void;

Sets several cookies at once:, (*13)

/**
 * If cookies exist they are replaced, if they do not exist they are created.
 *
 * @throws CookieException if headers already sent.
 */
public function replace(
    array $data,
    null|int|string|DateTime $expires = null
): void;

Gets a cookie by name:, (*14)

/**
 * Optionally defines a default value when the cookie does not exist.
 */
public function get(string $name, mixed $default = null): mixed;

Gets all cookies:, (*15)

public function all(): array;

Check if a cookie exists:, (*16)

public function has(string $name): bool;

Deletes a cookie by name and returns its value:, (*17)

/**
 * Optionally defines a default value when the cookie does not exist.
 * 
 * @throws CookieException if headers already sent.
 */
public function pull(string $name, mixed $default = null): mixed;

Deletes an cookie by name:, (*18)

/**
 * @throws CookieException if headers already sent.
 * @throws CookieException if failure in date/time string analysis.
 */
public function remove(string $name): void;

Josantonius\Cookie\Facades\Cookie, (*19)

Sets cookie options:, (*20)

/**
 * Cookie options:
 * 
 * domain:   Domain for which the cookie is available.
 * expires:  The time the cookie will expire.
 * httpOnly: If cookie will only be available through the HTTP protocol.
 * path:     Path for which the cookie is available.
 * raw:      If cookie will be sent as a raw string.
 * sameSite: Enforces the use of a Lax or Strict SameSite policy.
 * secure:   If cookie will only be available through the HTTPS protocol.
 * 
 * These settings will be used to create and delete cookies.
 * 
 * @throws CookieException if $sameSite value is wrong.
 *
 * @see https://www.php.net/manual/en/datetime.formats.php for date formats.
 * @see https://www.php.net/manual/en/function.setcookie.php for more information.
 */
public static function options(
    string              $domain   = '',
    int|string|DateTime $expires  = 0,
    bool                $httpOnly = false,
    string              $path     = '/',
    bool                $raw      = false,
    null|string         $sameSite = null,
    bool                $secure   = false
): void;

Sets a cookie by name:, (*21)

/**
 * @throws CookieException if headers already sent.
 * @throws CookieException if failure in date/time string analysis.
 */
public static function set(
    string $name,
    mixed $value,
    null|int|string|DateTime $expires = null
): void;

Sets several cookies at once:, (*22)

/**
 * If cookies exist they are replaced, if they do not exist they are created.
 *
 * @throws CookieException if headers already sent.
 */
public static function replace(
    array $data,
    null|int|string|DateTime $expires = null
): void;

Gets a cookie by name:, (*23)

/**
 * Optionally defines a default value when the cookie does not exist.
 */
public static function get(string $name, mixed $default = null): mixed;

Gets all cookies:, (*24)

public static function all(): array;

Check if a cookie exists:, (*25)

public static function has(string $name): bool;

Deletes a cookie by name and returns its value:, (*26)

/**
 * Optionally defines a default value when the cookie does not exist.
 * 
 * @throws CookieException if headers already sent.
 */
public static function pull(string $name, mixed $default = null): mixed;

Deletes an cookie by name:, (*27)

/**
 * @throws CookieException if headers already sent.
 * @throws CookieException if failure in date/time string analysis.
 */
public static function remove(string $name): void;

Exceptions Used

use Josantonius\Cookie\Exceptions\CookieException;

Usage

Example of use for this library:, (*28)

use Josantonius\Cookie\Cookie;

$cookie = new Cookie();
use Josantonius\Cookie\Facades\Cookie;

Cookie::options();
use Josantonius\Cookie\Cookie;

$cookie = new Cookie(
    domain: 'example.com',
    expires: time() + 3600,
    httpOnly: true,
    path: '/foo',
    raw: true,
    sameSite: 'Strict',
    secure: true,
);
use Josantonius\Cookie\Facades\Cookie;

Cookie::options(
    expires: 'now +1 hour',
    httpOnly: true,
);
use Josantonius\Cookie\Cookie;

$cookie = new Cookie();

$cookie->set('foo', 'bar');
use Josantonius\Cookie\Facades\Cookie;

Cookie::set('foo', 'bar');
use Josantonius\Cookie\Cookie;

$cookie = new Cookie();

$cookie->set('foo', 'bar', time() + 3600);
use Josantonius\Cookie\Facades\Cookie;

Cookie::set('foo', 'bar', new DateTime('now +1 hour'));

Sets several cookies at once

use Josantonius\Cookie\Cookie;

$cookie = new Cookie();

$cookie->replace([
    'foo' => 'bar',
    'bar' => 'foo'
]);
use Josantonius\Cookie\Facades\Cookie;

Cookie::replace([
    'foo' => 'bar',
    'bar' => 'foo'
], time() + 3600);

Sets several cookies at once modifying the expiration time

use Josantonius\Cookie\Cookie;

$cookie = new Cookie();

$cookie->replace([
    'foo' => 'bar',
    'bar' => 'foo'
], time() + 3600);
use Josantonius\Cookie\Facades\Cookie;

Cookie::replace([
    'foo' => 'bar',
    'bar' => 'foo'
], time() + 3600);
use Josantonius\Cookie\Cookie;

$cookie = new Cookie();

$cookie->get('foo'); // null if the cookie does not exist
use Josantonius\Cookie\Facades\Cookie;

Cookie::get('foo'); // null if the cookie does not exist
use Josantonius\Cookie\Cookie;

$cookie = new Cookie();

$cookie->get('foo', false); // false if cookie does not exist
use Josantonius\Cookie\Facades\Cookie;

Cookie::get('foo', false); // false if cookie does not exist

Gets all cookies

use Josantonius\Cookie\Cookie;

$cookie = new Cookie();

$cookie->all();
use Josantonius\Cookie\Facades\Cookie;

Cookie::all();
use Josantonius\Cookie\Cookie;

$cookie = new Cookie();

$cookie->has('foo');
use Josantonius\Cookie\Facades\Cookie;

Cookie::has('foo');
use Josantonius\Cookie\Cookie;

$cookie = new Cookie();

$cookie->pull('foo'); // null if attribute does not exist
use Josantonius\Cookie\Facades\Cookie;

Cookie::pull('foo'); // null if attribute does not exist
use Josantonius\Cookie\Cookie;

$cookie = new Cookie();

$cookie->pull('foo', false); // false if attribute does not exist
use Josantonius\Cookie\Facades\Cookie;

Cookie::pull('foo', false); // false if attribute does not exist
use Josantonius\Cookie\Cookie;

$cookie = new Cookie();

$cookie->remove('foo');
use Josantonius\Cookie\Facades\Cookie;

Cookie::remove('foo');
  • The expires parameter used in several methods of this library accepts the following types: int|string|DateTime., (*29)

    • Integers will be handled as unix time except zero.
    • Strings will be handled as date/time formats. See supported Date and Time Formats for more information.
    $cookie = new Cookie(
        expires: '2016-12-15 +1 day'
    );
    

    It would be similar to:, (*30)

    $cookie = new Cookie(
        expires: new DateTime('2016-12-15 +1 day')
    );
    
    • DateTime objects will be used to obtain the unix time.
  • If the expires parameter is used in the set or replace methods, it will be taken instead of the expires value set in the cookie options., (*31)

    $cookie = new Cookie(
        expires: 'now +1 minute'
    );
    
    $cookie->set('foo', 'bar');                        // Expires in 1 minute
    
    $cookie->set('bar', 'foo', 'now +8 days');         // Expires in 8 days
    
    $cookie->replace(['foo' => 'bar']);                // Expires in 1 minute
    
    $cookie->replace(['foo' => 'bar'], time() + 3600); // Expires in 1 hour
    
  • If the expires parameter passed in the options is a date/time string, it is formatted when using the set or replace method and not when setting the options., (*32)

    $cookie = new Cookie(
        expires: 'now +1 minute', // It will not be formatted as unix time yet
    );
    
    $cookie->set('foo', 'bar');   // It is will formatted now and expires in 1 minute
    

Tests

To run tests you just need composer and to execute the following:, (*33)

git clone https://github.com/josantonius/php-cookie.git
cd php-cookie
composer install

Run unit tests with PHPUnit:, (*34)

composer phpunit

Run code standard tests with PHPCS:, (*35)

composer phpcs

Run PHP Mess Detector tests to detect inconsistencies in code style:, (*36)

composer phpmd

Run all previous tests:, (*37)

composer tests

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 and phpcs.xml)

Changelog

Detailed changes for each release are documented in the release notes., (*38)

Contribution

Please make sure to read the Contributing Guide, before making a pull request, start a discussion or report a issue., (*39)

Thanks to all contributors! :heart:, (*40)

If this project helps you to reduce your development time, you can sponsor me to support my open source work :blush:, (*41)

License

This repository is licensed under the MIT License., (*42)

Copyright © 2016-present, Josantonius, (*43)

The Versions

06/01 2018

dev-master

9999999-dev

PHP library for handling cookies.

  Sources   Download

MIT

The Requires

  • php ^5.6 || ^7.0

 

The Development Requires

php hhvm cookies

06/01 2018

1.1.6

1.1.6.0

PHP library for handling cookies.

  Sources   Download

MIT

The Requires

  • php ^5.6 || ^7.0

 

The Development Requires

php hhvm cookies

12/11 2017

1.1.5

1.1.5.0

PHP library for handling cookies.

  Sources   Download

MIT

The Requires

  • php ^5.6 || ^7.0

 

The Development Requires

php hhvm cookies

30/10 2017

1.1.4

1.1.4.0

PHP library for handling cookies.

  Sources   Download

MIT

The Requires

  • php ^5.6 || ^7.0

 

The Development Requires

php hhvm cookies

17/09 2017

1.1.3

1.1.3.0

PHP library for handling cookies.

  Sources   Download

MIT

The Requires

  • php ^5.6 || ^7.0

 

The Development Requires

php hhvm cookies

18/07 2017

1.1.2

1.1.2.0

PHP library for handling cookies.

  Sources   Download

MIT

The Requires

  • php ^5.6 || ^7.0

 

php hhvm cookies

18/03 2017

1.1.1

1.1.1.0

PHP library for handling cookies.

  Sources   Download

MIT

The Requires

  • php ^5.6 || ^7.0

 

php hhvm cookies

30/01 2017

1.1.0

1.1.0.0

PHP library for handling cookies.

  Sources   Download

MIT

The Requires

  • php >=5.6

 

php hhvm cookies

15/12 2016

1.0.0

1.0.0.0

PHP library for handling cookies.

  Sources   Download

MIT

The Requires

  • php >=7.0

 

php hhvm cookies