Свойства с параметрамиКак облегчить себе правку сайта, если на странице перечислен список записей однотипной структуры? Можно, конечно, использовать метод «copy/paste», но при необходимости изменить шаблон вывода записей, придется вносить одни и те же изменения столько раз, сколько записей перечислено на странице.
Удобно вынести оформление вывода одной записи в отдельное свойство, а данные передавать с помощью ассоциативного массива, который попадет в свойство в виде переменной $params .
Предположим, требуется вывести список сайтов на страницу /sites . Определим свойство „site“ для этой страницы, в котором обработаем параметры $params:
site
<h2><a href="<?=$params['url']?>"><?=$params['name']?></a></h2>
<p><?=$params['info']?></p>
... |
Вывод элемента списка будет выглядеть так:
content
...
<?=getItem('site', array(
'name' => 'Система управления сайтом oocms',
'url' => 'http://oocms.com.ru/',
'info' => '...',
...
))?>
... |
Поскольку второй параметр в функции getItem является необязательным, то желательно проверять внутри свойства, переданы ли параметры, и в случае их отсутствия сообщать об ошибке или прекращать вывод на страницу. Например, в самом начале свойства „site“ можно написать следующий код для проверки передачи параметров:
<? if (!$params) return; ?>
В таком случае вызов свойства без параметров не приведет к появлению ошибок.
Другой способ предотвращения ошибок при обработке параметров — использование значений по умолчанию. Этот способ гарантирует, что все параметры будут иметь какие-то значения, даже в случае, когда при вызове getItem() мы передали массив параметров, но забыли указать значение одного или нескольких элементов.
<?
$params += array(
'name' => 'Ошибка',
'url' => '#',
'info' => ''
);?>
|