KnigaRead.com/

Нина Савельева - Курс "Язык программирования PHP"

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Нина Савельева, "Курс "Язык программирования PHP"" бесплатно, без регистрации.
Перейти на страницу:

Конфигурационные файлы


Конфигурационные файлы используются для того, чтобы управлять глобальными переменными, используемыми в шаблоне, с помощью одного файла. Их идея очень похожа на таблицы стилей css. Конфигурационный файл содержит набор переменных и их значения. Перед именем переменной не ставится никаких дополнительных символов типа знака доллара. Значение переменной по желанию заключают в кавычки (двойные или одинарные), если оно состоит из нескольких строк, то его заключают в тройные кавычки.


# глобальные переменные

pageTitle = "List of documents"

bodyBgColor = #000000

tableBgColor = #000000

rowBgColor = #00ff00

[Customer]

pageTitle = "Список статей"

Intro = """Это значение состоит из

нескольких строк. Поэтому его нужно

заключить в тройные кавычки."""

# скрытая секция

[.Database]

host=localhost

db=book

user=nina

pass=123



Конфигурационный файл может состоять из нескольких разделов (секций), каждая из которых имеет имя и может загружаться отдельно от остальных секций. Имя секции заключается в квадратные скобки. Кроме секций в конфигурационном файле могут содержаться глобальные переменные - они не входят ни в одну секцию и всегда загружаются при загрузке конфигурационного файла. Если загружается какая-то одна секция, то загружаются ее переменные и глобальные переменные. Если переменная существует и как глобальная переменная, и как переменная секции, то используется переменная секции. Если вы одинаково назовете две переменные внутри одной секции, то будет использоваться последняя из них. В приведенном выше примере две секции - Customer и Database, а кроме них заданы глобальные переменные pageTitle, bodyBgColor, tableBgColor и rowBgColor.


Чтобы спрятать значение переменной или секцию целиком, нужно перед ее именем поставить точку. В таком случае при загрузке конфигурационного файла эти данные нельзя будет прочесть. В примере мы сделали скрытой секцию Database, чтобы нельзя было узнать пароль и имя пользователя, применяемые для установки соединения.


Комментарии в конфигурационном файле можно обозначать символом #.


Загрузка конфигурационных файлов производится с помощью встроенной функции или метода config_load, подробнее об этом мы расскажем в следующей главе.


Методы


Для работы с шаблонами класс Smarty определяет набор методов. Рассмотрим несколько основных методов.


Метод assign


Синтаксис:


void assign (смешанное значение);

void assign (имя переменной,

смешанное значение);



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


<?php

// передаем пары имя/значение для

// переменной Name и

// Address в отдельности

$smarty->assign("Name","Вася");

$smarty->assign("Address",$addr);

// здесь $addr может быть и массивом

// передаем ассоциативный массив

$smarty->assign(array(

"city" => "Новосибирск",

"street" => "Пирогова"));

// таким образом, переменные city и street

// получат соответствующие значения

?>



Метод append


Синтаксис:


void append (смешанное значение);

void append (имя переменной,

смешанное значение);

void append (имя переменной,

смешанное значение, слияние);



Принцип действия этого примерно такой же, как и у assign. Метод append позволяет присоединить элемент к массиву. Если вы присоединяете значение к строковой переменной, то она преобразуется в массив, и значение добавляется уже в него. Так же, как и в assign, здесь можно передавать пары ключ/значение или ассоциативные массивы, содержащие эти пары. Если указать третий аргумент слияние равным TRUE, то значение будет не присоединено в качестве еще одного элемента, а слито воедино с текущим массивом.


$smarty->append(array(

title => $title,

author => $author))



Здесь если title была строкой, то она становится массивом и к нему добавляется еще один элемент со значением $title. То же самое происходит с переменной author.


Метод config_load


void config_load(имя файла, [имя секции]);


Метод загружает конфигурационный файл и встраивает его в шаблон. Аналогично этому методу действует функция config_load.


Пример: $smarty->config_load("task.conf","Database");


Метод display


void display(шаблон);


Метод отображает шаблон. У этого метода есть еще два опциональных параметра, о которых можно прочитать в документации.


Метод fetch


string fetch(шаблон);


Этот метод возвращает обработанный шаблон в строковую переменную, вместо того чтобы выводить его на экран. У этого метода есть еще два опциональных параметра, о которых можно прочитать в документации.


Встроенные функции


Smarty поставляется с набором встроенных функций, интегрированных в язык шаблонов. Нельзя создавать свои функции с такими же именами или модифицировать встроенные функции. Опишем некоторые из таких функций.


Функция config_load


Синтаксис:


{config_load file="имя_файла" }


Эта функция используется для загрузки в шаблон переменных из конфигурационных файлов. Кроме имени загружаемого файла, у этой функции может быть еще несколько дополнительных параметров. Например, параметр section, в котором указывают имя секции для загрузки. Более подробную информацию об этих и других параметрах можно получить из документации Smarty.


Пример:


{config_load file="task.conf"}


Функция capture


Синтаксис:


{capture name="имя_блока"

assign="имя_переменной"} ...

{/capture}


Эта функция предназначена для того, чтобы собирать в переменную выходные данные шаблона вместо того, чтобы выводить их на экран. Все, что находится между {capture name="varname"} и {/capture}, будет записано в переменную с именем varname. Захваченный таким образом контент может быть использован в шаблоне посредством специальной переменной $smarty.capture.varname, где varname - значение, переданное в атрибут name функции capture. Если имя переменной не задано, будет использовано имя default.


Второй параметр assign задает имя переменной, которой будет присвоено захваченное выходное значение. Этот параметр, как и name, не обязательный.


Функция section


Синтаксис:


{section name="имя_секции"

loop="переменная_для_выч-ния_числа_итераций"

[,start="индекс_начальной_позиции"]

[, step="шаг"] [,max="максимум_итераций"]

[,show="показывать_ли_секцию"] }...

{/section}



Секция Section - это цикл для обхода элементов массива. Обязательными являются параметры name, с помощью которого задается имя секции, и loop, который представляет собой переменную, определяющую число итераций цикла. Как правило, loop - это переменная типа массив, и число итераций секции равно числу элементов этого массива. Чтобы вывести переменную внутри цикла, нужно после имени переменной указать в квадратных скобках имя секции.


{section name=art loop=$title}

Название: {$title[art]}<br>

{/section}



Функция foreach


Синтаксис:


{foreach from="имя_массива"

item="имя_текущего_элемента"}

... {/foreach}



Кроме того, можно использовать дополнительные атрибуты key - имя ключа для текущего элемента массива и name - имя цикла, с помощью которого можно будет получать доступ к его свойствам. Атрибуты from и item - обязательные.


Циклы foreach являются альтернативой циклам section. Действие функции foreach очень похоже на работу цикла foreach в языке PHP.


{foreach from=$articles item=art}

Title: {$art}<br>

{/foreach}



Циклы foreach имеют свои собственные свойства. Получить доступ к ним можно таким образом: {$smarty.foreach.foreachname.varname}, где foreachname - это имя цикла, заданное его параметром name, а varname - имя свойства.


Оператор if, elseif, else


Синтаксис:


{if выражение} блок_действий

{elseif выражение1} блок_действий1

{else} блок_действий2

{/if}



Действие оператора практически аналогично оператору if...elseif...else языка PHP. В выражениях могут использоваться следующие операторы сравнения: eq, ne, neq, gt, lt, lte, le, gte, ge, is even, is odd, is not even, is not odd, not, mod, div by, even by, odd by, ==, !=, >, <, <=, >=. Каждый из них обязательно должен быть отделен от окружающих его значений пробелами. В выражениях можно использовать круглые скобки и вызывать php-функции.

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*