Далее перечислены методы класса Compiler, не попавшие в другие разделы.
void processGlobalCache ( void )
Инициализация глобальных настроек сайта (вызывается автоматически).
Метод создает глобальную переменную $settings, хранящую набор настроек сайта в виде ассоциативного массива. Данные хранятся в таблице settings, первая запись которой содержит значения всех настроек в сериализованном виде. Кроме того, если проект является многоязычным, метод также пополняет глобальный массив $language дополнительными локализованными сообщениями. Эти сообщения хранятся в таблице messages, первая запись которой содержит полный список дополнительных сообщений, также в сериализованном виде.
string createLink ( string page [, array params] )
Метод возвращает ссылку на страницу page, с учетом ее внешнего имени (если оно было указано в параметрах страницы) и списка параметров params. Если в списке представлений ссылок присутствует подходящее правило, ссылка будет сформирована в соответствии с этим правилом. Если подходящего правила нет − ссылка будет сформирована как обычно, по стандартным правилам формирования URL.
Пример:
// Предположим, у нас есть правило представления ссылок: gallery/$name/page$page
// Оно автоматически подставляет два параметра − name и page
// Вариант 1. Полное соответствие списка параметров правилу
// В этом случае метод генерирует красивую ссылку в соответствии с правилом
$params=array("name"=>"artistry","page"=>5);
$link=$compiler->createLink("gallery",$params);
echo $link; // Получится /gallery/artistry/page5
// Вариант 2. Присутствуют лишние параметры (print)
// В этом случае метод генерирует красивую ссылку в соответствии с правилом,
// а все лишние параметры дописываются в конец ссылки, как обычные URL-аргументы
$params=array("name"=>"artistry","page"=>5,"print"=>true);
$link=$compiler->createLink("gallery",$params);
echo $link; // Получится /gallery/artistry/page5?print=1
// Вариант 3. Некоторые параметры отсутствуют (page)
// В этом случае методу ничего не остается,
// кроме как сформировать ссылку стандартным способом
$params=array("name"=>"artistry","print"=>true);
$link=$compiler->createLink("gallery",$params);
echo $link; // Получится /gallery?name=artistry&print=1 string createLinkBack ( [string default] )
Метод возвращает ссылку "на предыдущую страницу", извлекая ее из значения переменной HTTP_REFERER. Если ссылка, переданная в этой переменной, имеет неверный формат, или ведет на другой сайт, или вообще не была указана − возвращается ссылка по умолчанию. В качестве ссылки по умолчанию выступает либо значение необязательного параметра default, либо, если этот параметр не был указан, ссылка на главную страницу сайта.
Пример:
$link=$compiler->createLinkBack();
echo $link; // Ссылка на страницу, с которой посетитель попал на текущую
void processTemplate ( string name [, array scope] )
Метод выполняет шаблон с именем name, то есть превращает его в окончательный HTML-текст с учетом всех специальных тегов, использованных в шаблоне. В частности, в шаблон будут подставлены значения переменных, переданных необязательным параметром scope, выполнены все шаблонные условия и циклы, и так далее. После выполнения шаблона метод отправляет готовую страницу клиенту и завершает работу скрипта.
Если шаблон с таким именем отсутствует, или в нем нарушен синтаксис специальных тегов, компилятор генерирует фатальную ошибку и также завершает работу скрипта.
Данный метод не возвращает результата, поскольку шаблон, выполняясь, выводит текст собранной страницы функциями echo. Если вам нужно сохранить результат работы шаблона в переменной, не завершая работу скрипта − используйте метод captureTemplate.
Пример:
$scope=array(
"username"=>"John Jackson",
"email"=>"johnjackson@gmail.com",
"activation"=>1234567890);
$compiler->processTemplate("userProfile",$scope);
// Эта строка никогда не будет выполнена
echo "Эники-Беники ели вареники"; string captureTemplate ( string name [, array scope] )
Метод работает аналогично методу processTemplate, с тем лишь отличием, что он не завершает работу скрипта и не выводит ничего на экран, а возвращает готовый HTML-текст в качестве результата.
Если вы вызываете данный метод из панели управления, а не из фронтальной части сайта, по умолчанию компилятор выдает ошибку "Не найден подходящий стиль для отображения сайта". Это нормальное поведение, означающее, что компилятор не запускал процесс анализа исходного HTTP-запроса. Для панели управления эта процедура не требуется, но для сборки шаблона она обязательна, поэтому перед первым вызовом метода captureTemplate в скриптах панели управления необходимо вызвать метод prepare, как в примере.
Пример:
// Сборка текста почтового уведомления, с учетом параметров
// 1. Подготовка параметров (переменных), которые будут доступны в шаблоне
$scope=array(
"username"=>"John Jackson",
"email"=>"johnjackson@gmail.com",
"activation"=>1234567890);
// 2. Подготовка компилятора (вызывать только в админке)
$compiler->prepare();
// 3. Собственно сборка шаблона emailNotification
$text=$compiler->captureTemplate("emailNotification",$scope); void standardError ( string message )
Метод предназначен для вывода сообщения об ошибке, переданного параметром message. Для оформления сообщения используется одноименный шаблон standardError, если вам нужно изменить дизайн сообщения − отредактируйте этот шаблон в панели управления. После вывода сообщения скрипт немедленно завершает свою работу, то есть после вызова данного метода дальнейший PHP-код уже не будет выполнен.
Пример:
// Вывод сообщения об ошибке и завершение работы
$compiler->standardError("Вы указали неверный пароль.");
// Эта строка никогда не будет выполнена
echo "Эники-Беники ели вареники"; void standardRedirect ( string message [, string link] )
Метод предназначен для вывода сообщения об успешной операции, с красивой переадресацией посетителя на новую страницу. Текст сообщения указывается параметром message, ссылка на новую страницу − необязательным параметром link. Если параметр link не указан, будет произведена переадресация на главную страницу сайта.
Для оформления сообщения используется одноименный шаблон standardRedirect, если вам нужно изменить дизайн сообщения − отредактируйте этот шаблон в панели управления. После вывода сообщения скрипт немедленно завершает свою работу, то есть после вызова данного метода дальнейший PHP-код уже не будет выполнен. Для "мягкой" переадресации посетителя используется метод HTML-редиректа, стандартным заголовком Meta=refresh. По умолчанию переадресация делается с задержкой в 1 секунду, это значение также хранится в шаблоне.
Пример:
// Вывод сообщения об успешном создании новой галереи
$message="Галерея добавлена! Сейчас вы будете переадресованы на нее.";
$link=$compiler->createLink("gallery",array("id"=>$galleryid));
$compiler->standardRedirect($message,$link);
// Вывод сообщения и редирект на главную страницу
$message="Поздравляем, вы успешно зарегистрировались.";
$compiler->standardRedirect($message);