Skip to content
This repository was archived by the owner on Jan 31, 2020. It is now read-only.
This repository was archived by the owner on Jan 31, 2020. It is now read-only.

Zend\Session::AbstractContainer::offsetExists() returning FALSE for key with NULL value #111

Description

@nuxwin

@weierophinney @Ocramius

As said in the title, checking if specific offset exists when it is set with NULL value always return FALSE.

// Zend session container
$session = Application::getInstance()->getSession();
$session['key'] = NULL;
if($session->offsetExists('key')) {
        // do something
}

The problem is that current implementation rely on PHP isset() language construct which return FALSE for keys with NULL value. Shouldn't it be preferable to use the PHP array_key_exists() function? What we want there is knonwing if a specific offset exists, whatever it value, right? Else, is there any reliable way to check if a particular key was set, whatever it value and without first having to get an array copy?

Even worse is that trying to unset an offset with NULL value will lead to a NO OP because we return early from Zend\Session::AbstractContainer::offsetUnset() if the offset isn't set in regard of the Zend\Session::AbstractContainer::offsetExists() current implementation:

// Zend session container
$session = Application::getInstance()->getSession();
$session['key'] = NULL;
$session->offsetUnset('key'); NO OP... Key will still be in storage...

Thank you.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions