Example #1
0
 public static function set($name = '', $value = null)
 {
     //if(Session::get($name)===$value)return; //если сохранена ссылка то изменение её не попадает в базу данных и не синхронизируется
     $right = Sequence::right($name);
     if (is_null($value)) {
         //Удаление свойства
         $last = array_pop($right);
         $val = Session::get($right);
         if ($last && Each::isAssoc($val) === true) {
             //Имеем дело с ассоциативным массивом
             $iselse = false;
             foreach ($val as $i => $valval) {
                 if ($i != $last) {
                     $iselse = true;
                     break;
                 }
             }
             if (!$iselse) {
                 //В объекте ничего больше нет кроме удаляемого свойства... или и его может даже нет
                 //Зачит надо удалить и сам объект
                 return Session::set($right, null);
             } else {
                 array_push($right, $last);
                 //Если есть ещё что-то то работает в обычном режиме
             }
         }
     }
     $li = array('name' => $right, 'value' => $value);
     global $infra_session_data;
     Session::sync($li);
     $infra_session_data = Session::make($li, $infra_session_data);
 }