<?php
function getKey($session_key, $is_object_of_type = null)
{
$current_key = '';
$counter = 0;
try {
$session_keys_array = explode(':', $session_key);
if (!$_SESSION) {
throw new Exception("\$_SESSION does not Exist");
}
$prev_step = $_SESSION;
//checking if keys and value exist
foreach ($session_keys_array as $key) {
$counter++;
$current_key .= '[\'' . $key . '\']';
echo 0;
if (array_key_exists($key, $prev_step) && count($session_keys_array) > $counter) {
echo 1;
$prevStep = $prev_step[$key];
var_dump($prevStep);
if (!is_array($prev_step) && count($session_keys_array) > $counter) {
echo 2;
throw new Exception ("\$_SESSION$current_key is not an array");
}
} else if (
is_array($prev_step) &&
array_key_exists($key, $prev_step) &&
count($session_keys_array) == $counter
) {
echo 3;
$result = $prev_step[$key];
} else {
echo 4;
throw new Exception("\$_SESSION$current_key does not Exist");
}
}
echo 5;
//checking if value is of right type
if (!empty($is_object_of_type) && !$result instanceof $is_object_of_type) {
echo 6;
throw new Exception("\$_SESSION$current_key is not instance of $is_object_of_type");
}
echo 7;
//if we are here that means we have all safe data
} catch(Exception $e) {
//TODO:change Exception to SessionException and log this
echo 8;
$result = null;
}
echo 9;
return $result;
}
function setSessionTestingData()
{
$agent = 5;
$ticket = 6;
$_SESSION = array(
'agent_id' => '2',
'ticket_id' => '3',
'agent' => $agent,
'ticket' => $ticket,
'sub_array' => array(
'sub' => 4,
'agent' => $agent,
'ticket' => $ticket,
),
);
return $_SESSION;
}
$_SESSION = setSessionTestingData();
echo getKey('sub_array:sub');
preferences:
38.01 ms | 402 KiB | 5 Q