Zmienne globalne a zmiana wartości

0

Witam mam dziwny problem :

Mam dwa pliki .php

session_module
index

W indexie mam :

<?php 
include('session_module.php');  
sess_start();
?>

zaś w session_module :


<?
$MYSID;

function sess_start($sid=NULL)
 {

  global $MYSID, $CKDOMAIN, $SES_VAR, $SESSION_DIR;
  if (!isset($sid))
  {
    if (isset($_COOKIE['MYSID'])) $MYSID = $_COOKIE['MYSID'];
  }
  else
    if ($sid != '') $MYSID = $sid;

 if (!$MYSID) 
 {
    $MYSID = generate_SID();
 }

 setcookie("MYSID",$MYSID,time()+365*24*3600,"/");

 if (file_exists($SESSION_DIR.$MYSID))
    {
    $arr = file($SESSION_DIR.$MYSID);

    // if session is expired, then skip ...
    if ( time() > $arr[0] )
         {
         unlink($SESSION_DIR.$MYSID); 
         return;
         }

    // read content of session from file system ... 
    for ($i=1;$i<count($arr);$i++)
        {
        $arr2=explode(":",$arr[$i]);
        $arr2[1]=base64_decode($arr2[1]);
        $SES_VAR[$arr2[0]]=1;
        GLOBAL ${$arr2[0]};
        ${$arr2[0]} = $arr2[1];
        }
    }

 }

?>

Jak widać to poprzez index wywołuję funkcje session_start z session_module , która zmienia wartość w zmiennej globalnej $MYSID. Problem w tym że gdy próbuję ją wyświetlić w indexie to zawsze ma pustą wartość ( wartość początkową np. gdy ustawie w session_module wartość na 5 to nawet po odpaleniu funkcji ta wartość się nie zmieni).Gdy wstawie w funkcji na końcu return aby zwróciło mi wartość tą lokalną to jest OK. Dlaczego nie zmienia mi wartości zmiennej globalnej tylko zmiana jest w obrębie samej funkcji. Przecież są dodane znaczniki global

0

http://www.w3schools.com/php/php_variables.asp
Doczytaj sobie tutaj jak działa polecenie global : "The global keyword is used to access a global variable from within a function."
Znaczy to że zmienna globalna musi być wcześniej stworzona, a w funkcji możesz się do niej dostać za pomocą polecenia global.
Ogólnie staraj się nie korzystać za bardzo z zmiennych globalnych, jest to zaliczane do złych nawyków. Znacznie lepiej skorzystać z klas, ograniczając tym samym zasięg tych zmiennych, do tej właśnie klasy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0