Автор Тема: var_dump и т.д  (Прочитано 7468 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Vint

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 40
  • +0/-0
  • 0
    • Просмотр профиля
    • www.velovint.f2s.com
var_dump и т.д
« : 07 Марта 2002, 16:54:56 »
Условие:
есть переменная

$var
=array
(
  
"http://host1/"=>array
     (
     
"ses"=>"OTcyNjk0MTA41",
     
"id"=>"value1"),
  
"http://host2/"=>array
     (
     
"ses"=>"OTcyNjk0MTA42",
     
"id"=>"value2")
);

Задача: сохранить ее в файл так, чтобы потом инклудя файл она (переменная) инициализировалась.
Испробованные варианты:
1. Ес-но обычный перебор, но иногда мозги заворачиваются от list=each, пошел искать пути полегче.
2. var_dump. Сначала конечно обнадеживает, кажется, что все будет хорошо, но ес-но переменная не инициализируется по строке

array(2) {
  ["http://host1/"]=>
  array(2) {
    ["ses"]=>
    string(13) "OTcyNjk0MTA41"
    ["id"]=>
    string(6) "value1"
  }
  ["http://host2/"]=>
  array(2) {
    ["ses"]=>
    string(13) "OTcyNjk0MTA42"
    ["id"]=>
    string(6) "value2"
  }
}

это неправильно, хотя смотреть что у тебя в переменной оч. удобно. Может дажи и дебаггера не надо.
3. print_r. Prints human-readable information about a variable. Просто YO! Действительно смотреть на переменную удобнее, но проблема таже, что и var_dump.
4. var_export. ...that the returned representation is valid PHP code. Ну, думаю, закончились мои мучения. А-н нет. :(
PHP 4 CVS only. А я про ентот CVS ни разу и не слыхал.
Может кто еще варианты какие знает, список пополнить поможет?
Заранее сенк.
... или я торможу?

Оффлайн Dm

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1263
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
var_dump и т.д
« Ответ #1 : 07 Марта 2002, 17:19:56 »
А serialize(); и unserialize(); не подходят?
с уважением,
магистр белой магии.

Оффлайн Vint

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 40
  • +0/-0
  • 0
    • Просмотр профиля
    • www.velovint.f2s.com
var_dump и т.д
« Ответ #2 : 08 Марта 2002, 11:57:18 »
это конечно мысля... одно только плохо, надо не забывать потом unserialize делать... наверное все-таки буду свою функцию писать... да и на будущее может пригодиться.
... или я торможу?

Оффлайн Vint

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 40
  • +0/-0
  • 0
    • Просмотр профиля
    • www.velovint.f2s.com
вариант 5
« Ответ #3 : 08 Марта 2002, 13:49:36 »
Короче вот что получилось, писал чисто под свои нужнды, чтобы обрабатывалось только то, что мне нужно:
имеется завернутая такая переменная и функция VarDump($var)

$var
=array
(
  
1=>"adsf",
  
"http://host1/"=>array
     (
     
"ses"=>"OTcyNjk0MTA41",
     
"id"=>"value1"),
  
"http://host2/"=>array
     (
"mes"=>array
        (
"from"=>"me",
        
"id"=>1234
        
),
     
"ses"=>"OTcyNjk0MTA42",
     
"id"=>"value2")
);

function 
VarDump($var,$space="")
{static 
$retVal="";
$pref=";\\n";
switch(
gettype($var))
   {case 
"integer":
      
$retVal.=intval($var);
      break;
   case 
"string":
      
$retVal.="\\"$var\\"";
      break;
   case 
"array":
      
$pref="\\n";
      
$retVal.="array(";
      
$space.="   ";
      while(list(
$key,$value)=each($var))
         {
is_int($key)?$retVal.=$pref.$space.$key."=>":$retVal.=$pref.$space."\\"$key\\"=>";
         
VarDump($var[$key],$space);
         
$pref=",\\n";
         }
      
$retVal.="\\n$space)";
      
$pref=";";
      break;
   default: 
$retVal.="0"; break;
   }
return 
$retVal.$pref;
}


если говорим echo VarDump($var);, то получаем:

array(
   
1=>"adsf",
   
"http://host1/"=>array(
      
"ses"=>"OTcyNjk0MTA41",
      
"id"=>"value1"
      
),
   
"http://host2/"=>array(
      
"mes"=>array(
         
"from"=>"me",
         
"id"=>1234
         
),
      
"ses"=>"OTcyNjk0MTA42",
      
"id"=>"value2"
      
)
   );

а это является правильным объявлением, что и требовалось доказать.
NAS, скажи, что я тормоз и дурак, и что что-то похожее уже давно написано и есть в стандартных функция (как прошлый раз) :)
... или я торможу?

Оффлайн Dm

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1263
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
var_dump и т.д
« Ответ #4 : 08 Марта 2002, 17:13:43 »
Если требуется сохранить переменную в файле, почему нельзя использовать алгоритм:
1. serialize
2. сохраняем результат в файле
...
3. загружаем из файла
4. unserialize()

все. почему этот вариант не подходит?
с уважением,
магистр белой магии.

Оффлайн Vint

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 40
  • +0/-0
  • 0
    • Просмотр профиля
    • www.velovint.f2s.com
var_dump и т.д
« Ответ #5 : 08 Марта 2002, 17:20:58 »
да впринципе совершенно нормальный вариант, только
1. файл инклудится в разных местах и поэтому приятно не задумываться о unserialize() . Алгоритм сводится к сохранили, загрузили.
2. мой вариант куда приятнее глазам в файле, чем \'O:1:"a":1:{s:5:"value в файле, да и самому подправить/посмотреть можно.
Лучше скажи, как тебе мой последний вариант :)
... или я торможу?

Оффлайн Dm

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1263
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
var_dump и т.д
« Ответ #6 : 08 Марта 2002, 22:30:53 »
это несколько неоптимальный вариант.
что требуется? постоянно наблюдать глазами за служебный информацией в файлах? ;)
правка может быть из скрипта (изменение переменной), тем более так корректнее.

Цитировать
1. файл инклудится в разных местах и поэтому приятно не задумываться о unserialize() . Алгоритм сводится к сохранили, загрузили.

один (!) раз загружаем переменную и все!!! один раз unserialize().
и еще, какая разница м/д вариантами в таком случае, кстати?

да, а как будет загрузка происходить?
если eval - это еще и небезопасно.
с уважением,
магистр белой магии.

Оффлайн Vint

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 40
  • +0/-0
  • 0
    • Просмотр профиля
    • www.velovint.f2s.com
var_dump и т.д
« Ответ #7 : 09 Марта 2002, 12:46:23 »
Цитировать
один (!) раз загружаем переменную и все!!! один раз unserialize().

ну вот, сейчас ты меня убедишь, что я ее (переменную) загружаю только один раз. нет! не один! много и в разных местах, я уже об этом писал. эта инфа сохраняется довольно часно, в среднем около 10 раз за проход скрипта.
Цитировать
тем более так корректнее

чем это корректнее?
Цитировать
какая разница м/д вариантами в таком случае, кстати?
во первый случай не такой, а даже если и такой, то просто приятнее.
Цитировать
да, а как будет загрузка происходить?

require и все, а с serialize в файле хранится $a="a:23...", потоп нужно сделать $a=unserialize($a) и так все переменные... это уже можно отдельную функцию на инклуд переменных писать. Не, мне мой вариант куда больше нравится... особенно после споров с тобой.
Цитировать
если eval - это еще и небезопасно.

а я не боюсь, что кто-то увидит сохраненные куки или ссылки :), вот такой вот я смелый :)
« Последнее редактирование: 09 Марта 2002, 12:52:01 от Vint »
... или я торможу?

Оффлайн Dm

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1263
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
var_dump и т.д
« Ответ #8 : 09 Марта 2002, 14:28:05 »
мое дело предложить ;)
с уважением,
магистр белой магии.

Оффлайн Vint

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 40
  • +0/-0
  • 0
    • Просмотр профиля
    • www.velovint.f2s.com
var_dump и т.д
« Ответ #9 : 12 Марта 2002, 09:20:07 »
люди, ну посоветуйте еще что-нить. плз!
... или я торможу?

Оффлайн Dm

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1263
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
var_dump и т.д
« Ответ #10 : 12 Марта 2002, 22:53:24 »
Цитировать
а я не боюсь, что кто-то увидит сохраненные куки или ссылки , вот такой вот я смелый

да? а shellexec на твоем сервере тебя не пугает?

Цитировать
люди, ну посоветуйте еще что-нить. плз!

а что еще тебя интересует?

Цитировать
во первый случай не такой, а даже если и такой, то просто приятнее.

чем, интересно?

Цитировать
среднем около 10 раз за проход скрипта.

а об оптимизации не думал?
с уважением,
магистр белой магии.

  • Гость
var_dump и т.д
« Ответ #11 : 14 Марта 2002, 09:29:09 »
Цитировать
да? а shellexec на твоем сервере тебя не пугает?

неа, я не знаю, что это такое. А что, это страшно? Последствия? Насколько это сложно?
Цитировать
чем, интересно?

тем, что данные читабельные :)
Цитировать
а об оптимизации не думал?

может посоветуешь что? значит скрипт получает содержимое страничек, след-но если не работает socket_set_timeout() при получении любой странички может получиться таймаут, значит желательно сохранить результаты. ЛИбо потом все повторять сначала. Вот он и сохранят перед получением странички данные, необходимые для восстановления данные. Скрипт рассчитан на небольшую нагрузку, врядли его будут юзать одновременно 2 человека :).

Оффлайн Metaller

  • Мелкое злобное существо
  • Ветеран
  • *****
  • Сообщений: 538
  • +0/-0
  • 2
    • Просмотр профиля
    • http://michael.pp.ru
var_dump и т.д
« Ответ #12 : 14 Марта 2002, 12:04:57 »
Я подобное (правда в более сложном варианте) делал таким образом:

У меня массив был многоуровневым, с любым количеством вложений. Писал функцию, сохраняющую текущую ветку в inc-файл, потом, если текущее поле было Array, рекурсивно вызывал саму себя. Получался аккуратненький файлик с PHP-объявлением массива. Потом я его инклюдил, где надо - и все замечательно работало...
вот.


P.S. исходник не кидаю, он большой и запутанный, а выдирать из него лишнее неохота.
Everybody\'s Got A Ticket To Ride Except For Me And My Lightning...

Оффлайн AlieN

  • Абыр!=)
  • Ветеран
  • *****
  • Сообщений: 1315
  • +0/-1
  • 2
    • Просмотр профиля
var_dump и т.д
« Ответ #13 : 14 Марта 2002, 13:14:38 »
Metaller
Цитировать
У меня массив был многоуровневым, с любым количеством вложений.

А дай исходник :)
The Chemical Brothers - Hey Boy Hey Girl (User Friendly Mix)
Peter Presta pres - Set Sail(Peter Presta Apple Jaxx Dub) She S.Sunshine Feat Mila - Bring The Beat Back (Club Mix) Jerry Ropero - Home Alone (Dub Mix)

Оффлайн Metaller

  • Мелкое злобное существо
  • Ветеран
  • *****
  • Сообщений: 538
  • +0/-0
  • 2
    • Просмотр профиля
    • http://michael.pp.ru
var_dump и т.д
« Ответ #14 : 14 Марта 2002, 13:22:49 »
AlieN
Секрет фирмы.... гы.. :-))))
Everybody\'s Got A Ticket To Ride Except For Me And My Lightning...

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28