Предположим, что наша онлайн программа должна выполнять комплекс математических действий в различных частях приложения. Мы можем создать компонент, который позволит использовать наш код в разных контроллерах.
Первый шаг – это создать новый файл и класс компонента. Создадим файл в /app/controllers/components/math.php. Базовая структура для компонента будет выглядеть примерно так:
<?php
class MathComponent extends Object {
function doComplexOperation($amount1, $amount2) {
return $amount1 + $amount2;
}
}
?>
После того, как наш компонент создан, мы можем использовать его в контроллерах приложения, разместив имя компонента (без слова Component) в массив контроллера $components.
<?php
/* Сделайте новый компонент доступным через $this->Math,
так же как и стандартный $this->Session */
var $components = array('Math', 'Session');
?>
Компоненты, определенные в AppController, будут доступны в других контроллерах. Так что, нет необходимости переопределять один и тот же компонент дважды.
Когда подключаете компоненты в контроллер, вы также можете определить множество параметров, которые будут передаваться в метод компонента initialize(). Эти параметры в дальнейшем могут использоваться компонентом.
<?
var $components = array(
'Math' => array(
'precision' => 2,
'randomGenerator' => 'srand'
),
'Session', 'Auth'
);
?>