Функции и классы, определяемые пользователем

Если вам нужно многократно использовать один и тот же код, причем в различных скриптах (шаблонах, дескрипторах и т.д.), то можно создавать функции. Работа с пользовательскими функциями производится обычным для PHP образом. Однако нужно сделать одно важное замечание:

Пользовательские функции нужно определять
в отдельных файлах!

Если двум блокам на одной странице назначить один и тот же шаблон с определенной внутри функцией, то это вызовет ошибку, так как в PHP нельзя функцию определять дважды. Ошибка произойдет даже при попытке примерить шаблон какому-либо блоку во время процедуры назначения шаблона.

Поэтому, чтобы застраховаться от подобных случаев, лучше помещать коды определения функций в отдельные файлы, которые затем подключать в шаблонах с помощью стандартных конструкций require_once или include_once.

Рекомендуем помещать коды определения всех функций, используемых в шаблоне, в один файл (в папке templates) с именем, совпадающим с именем соответствующего шаблона. Расширение – произвольное, лучше, php. Пример:

news.tpl
<?php

    require_once 'news.php';
    . . .     
    $dat2 = treatData($dat);
    . . . 
    echo getImage();
    . . . 
?>
news.php
<?php

    function treatData($dat)
    {
        . . . 
    }


    function getImage()
    {
        . . . 
    }
    
?>

Анонимные функции

news.tpl
<?php
    $treatData function($dat)
    {
        . . . 
    };
    
    $getImage function()
    {
        . . . 
    };
    . . .     
    $dat2 = $treatData($dat);
    . . . 
    echo $getImage();
    . . . 
?>

 

Если вы определяете функцию в пределах одного скрипта, то лучше пользоваться анонимными функциями.

В этом случае определение функции не нужно выносить в отдельный файл.

Обратите внимание на выделенный символ ';' после определения анонимных функций.