Правильное именование PV (переменных страницы)

Программирование Page Variables - это переменные существующие в контексте текущей страницы. В отличие о php-переменных, они динамически создаются в момент генерации текущей страницы посредством исполнения php-кода и потому могут содержать данные именно этой самой страницы. Другими словами, в конфигурации системы PV содержат не конкретные значения, о валидные php-выражения, которые будут исполнены в контексте обращения к странице. Таким контекстом может быть как простой вывод страницы, так и при ее pagelist'инг. Для создания PV используется массив FmtPV.

Вопросы, на которые отвечает эта статья:

  • Почему в дефолтном pmwiki.tmpl вот такой код: $WikiTitle | {$Group} ?
  • Здесь сказано: "nearly any PHP global variable that begins with a capital letter can be used in a skin template. Page variables can also be used in templates." Так ли это?

Эти рекомендации вызывают недоумения и сомнения, поэтому давайте проверим экспериментально.

Пусть в config.php исполняется код $test = '1';

Тогда при обработке макета получится:

{$test} -> {1} 
$test -> 1

Пусть в config.php исполняется код $Test = '1';

Тогда при обработке макета получится:

{$Test} -> пусто!
$Test -> 1

Вывод: использование И скобок, И именование с заглавной буквы позволяет обрабатывать конструкцию исключительно как PV - она будет выведена, только если она задана через массив FmtPV, а не просто как переменная PHP.

Также замечен такой эффект:

Пусть в config.php исполняется код $tes = '222';

Тогда при обработке макета получится: $test -> 222t

Итоговые выводы:

  • все PV должны называться с заглавной буквы И в макете дизайна вызываться через фигурные скобки;
  • осталось неясно, откуда в официальной документации взялось требование "nearly any PHP global variable that begins with a capital letter can be used in a skin template" (поскольку для php-переменных и маленькая буква тоже работает), но, наверное, следует на всякий случай следовать и ему;
  • вызывая переменную php, имейте в виду: если по каким-то причинам она окажется не определена, то любая ее подстрока начиная с доллара также будет обработана как php-переменная.