Что означает глава кэш-файлов smarty? - PullRequest
0 голосов
/ 24 октября 2009
132
a:4:{s:8:"template";a:1:{s:10:"index.html";b:1;}s:9:"timestamp";i:1256373019;s:7:"expires";i:1256373079;s:13:"cache_serials";a:0:{}}<body>
 php<br >
  java<br >
  c++<br >

</body>

Может кто-нибудь объяснить эту часть:

132
    a:4:{s:8:"template";a:1:{s:10:"index.html";b:1;}s:9:"timestamp";i:1256373019;s:7:"expires";i:1256373079;s:13:"cache_serials";a:0:{}}

Ответы [ 2 ]

1 голос
/ 24 октября 2009

Это сериализованная версия массива PHP:

<?php
$serialized = 'a:4:{s:8:"template";a:1:{s:10:"index.html";b:1;}s:9:"timestamp";i:1256373019;s:7:"expires";i:1256373079;s:13:"cache_serials";a:0:{}}';
$unserialized = unserialize($serialized);
print_r($unserialized);

Результат:

Array
(
[template] => Array
    (
        [index.html] => 1
    )

[timestamp] => 1256373019
[expires] => 1256373079
[cache_serials] => Array
    (
    )

)
1 голос
/ 24 октября 2009

Я не знаю много о Smarty, но это похоже на что-то похожее на Bencoding , где вы кодируете такие вещи, как строки и массивы, сначала указывая их длины. Это позволяет избежать необходимости разделять такие вещи «специальными символами» (такими как кавычки), которые затем необходимо «экранировать», если они появляются в реальной строке.

  • 132 - длина закодированной строки.
  • a:4: похоже, что он вводит ассоциативный массив (словарь) с 4 элементами.
  • s:8:"template" представляется строкой длины 8 со значением «шаблон». В данном случае это ключ первого элемента в словаре.
  • Значением этого элемента в данном случае является другой словарь, который просто отображает ключ "index.html" в целочисленное значение 1.
  • ... И я думаю, что вы можете решить все остальное.
...