Tytuł tematu nie do końca jest prawdziwy, zaraz wyjaśnię dlaczego, jednak nie potrafiłem inaczej nazwać swojego problemu. Jakiś czas temu zacząłem oglądać pewien kurs związany z PHP. Zostały tam przedstawione pewne funkcje, których przy swojej znajomości PHP, nie jestem w stanie zrozumieć, jak mają prawo działać. Niestety tematem kursu było co innego, więc nie zostało w nim dokładnie to wyjaśnione. Mam nadzieję, że ktoś z Was będzie w stanie rozjaśnić temat.
Mamy kod (w pewnej klasie):
function setAlertTypes($types){ $this->setAlertTypes = $types; //Pytanie 1 } function setAlert($value, $type = null){ if($type == ''){ $type = $this->alertTypes[0]; } $_SESSION[$type][] = $value; //Pytanie 2 } function getAlerts(){ $data = ''; foreach($this->setAlertTypes as $alert){ foreach($_SESSION[$alert] as $value){ $data .= '<li class="alert alert-' . $alert . '">' . $value . '</li>'; } } } return $data; }
Pytanie 1: W bloku klasy nie została utworzona zmienna 'setAlertTypes', jednak autor w jakiś sposób się do niej odwołuje. Jak to jest możliwe? Jeśli w jakiś sposób zostanie automatycznie stworzona taka zmienna, to jaki typ będzie miała?
Pytanie 2: Czy taka konstrukcja "$_SESSION[$type][] = $value;" powoduje, że przy użyciu w np. taki sposób:
$_SESSION['x'][] = 'wartosc 1'; $_SESSION['x'][] = 'wartosc 2'; $_SESSION['x'][] = 'wartosc 3';
zostaną nadane kolejne indeksy, do których będzie można się odwołać w taki sposób:
$_SESSION['x'][0] $_SESSION['x'][1] $_SESSION['x'][2]
Dobrze rozumiem?