Spec-Zone.ru › Yii 1.1

CFilterChain

Пакет system.web.filters
Наследование класс CFilterChain » CList » CComponent
Реализует Countable, ArrayAccess, Traversable, IteratorAggregate
С версии 1.0
Исходный код framework/web/filters/CFilterChain.php
CFilterChain представляет собой список фильтров, применяемых к действию.

CFilterChain выполняет список фильтров с помощью run().

Общедоступные свойства

Свойство Тип Описание Определено в
action CAction фильтруемое действие. CFilterChain
controller CController контроллер, выполняющий действие. CFilterChain
count целое число Возвращает количество элементов в списке. CList
filterIndex целое число индекс фильтра, который будет выполнен при вызове run(). CFilterChain
iterator Итератор Возвращает итератор для перебора элементов в списке. CList
readOnly булево указывает, является ли список только для чтения. CList

Общедоступные методы

Метод Описание Определено в
__call() Вызывает метод с указанным именем, который не является методом класса. CComponent
__construct() Конструктор. CFilterChain
__get() Возвращает значение свойства, список обработчиков событий или поведение на основе его имени. CComponent
__isset() Проверяет, является ли значение свойства null. CComponent
__set() Устанавливает значение свойства компонента. CComponent
__unset() Устанавливает свойство компонента в null. CComponent
add() Добавляет элемент в конец списка. CList
asa() Возвращает объект поведения с указанным именем. CComponent
attachBehavior() Присоединяет поведение к компоненту. CComponent
attachBehaviors() Присоединяет список поведений к компоненту. CComponent
attachEventHandler() Присоединяет обработчик события к событию. CComponent
canGetProperty() Определяет, можно ли прочитать свойство. CComponent
canSetProperty() Определяет, можно ли установить свойство. CComponent
clear() Удаляет все элементы из списка. CList
contains() CList
copyFrom() Копирует данные итерируемого объекта в список. CList
count() Возвращает количество элементов в списке. CList
create() Метод фабрики CFilterChain. CFilterChain
detachBehavior() Отсоединяет поведение от компонента. CComponent
detachBehaviors() Отсоединяет все поведения от компонента. CComponent
detachEventHandler() Отсоединяет существующий обработчик события. CComponent
disableBehavior() Отключает присоединенное поведение. CComponent
disableBehaviors() Отключает все присоединённые поведения к этому компоненту. CComponent
enableBehavior() Включает присоединённое поведение. CComponent
enableBehaviors() Включает все присоединенные поведения к этому компоненту. CComponent
evaluateExpression() Вычисляет PHP-выражение или обратный вызов в контексте этого компонента. CComponent
getCount() Возвращает количество элементов в списке. CList
getEventHandlers() Возвращает список присоединенных обработчиков событий для события. CComponent
getIterator() Возвращает итератор для перебора элементов в списке. CList
getReadOnly() Возвращает значение, указывающее, является ли этот список только для чтения. По умолчанию - false. CList
hasEvent() Определяет, определено ли событие. CComponent
hasEventHandler() Проверяет, есть ли присоединенные обработчики к событию с указанным именем. CComponent
hasProperty() Определяет, определено ли свойство. CComponent
indexOf() CList
insertAt() Вставляет элемент в указанную позицию. CFilterChain
itemAt() Возвращает элемент по указанному смещению. CList
mergeWith() Объединяет данные итерируемого объекта в карту. CList
offsetExists() Возвращает, есть ли элемент по указанному смещению. CList
offsetGet() Возвращает элемент по указанному смещению. CList
offsetSet() Устанавливает элемент по указанному смещению. CList
offsetUnset() Удаляет элемент по указанному смещению. CList
raiseEvent() Вызывает событие. CComponent
remove() Удаляет элемент из списка. CList
removeAt() Удаляет элемент по указанной позиции. CList
run() Выполняет фильтр с индексом filterIndex. CFilterChain
toArray() CList

Защищённые методы

Метод Описание Определено в
setReadOnly() Устанавливает, является ли этот список только для чтения CList

Подробное описание свойств

action свойство

public CAction $action;

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

controller свойство

public CController $controller;

контроллер, выполняющий действие.

filterIndex свойство

public integer $filterIndex;

индекс фильтра, который должен быть выполнен при вызове run().

Подробное описание методов

__construct() метод

public void __construct(CController $controller, CAction $action)
$controller CController контроллер, выполняющий действие.
$action CAction действие, отфильтровываемое этой цепочкой.
Исходный код: framework/web/filters/CFilterChain.php#42 (показать)
public function __construct($controller,$action)
{
    
$this->controller=$controller;
    
$this->action=$action;
}

Конструктор.

create() метод

public static CFilterChain create(CController $controller, CAction $action, array $filters)
$controller CController контроллер, выполняющий действие.
$action CAction действие, отфильтровываемое этой цепочкой.
$filters array список фильтров, применяемых к действию.
{return} CFilterChain
Исходный код: framework/web/filters/CFilterChain.php#57 (показать)
public static function create($controller,$action,$filters)
{
    
$chain=new CFilterChain($controller,$action);

    
$actionID=$action->getId();
    foreach(
$filters as $filter)
    {
        if(
is_string($filter))  // filterName [+|- action1 action2]
        
{
            if((
$pos=strpos($filter,'+'))!==false || ($pos=strpos($filter,'-'))!==false)
            {
                
$matched=preg_match("/\b{$actionID}\b/i",substr($filter,$pos+1))>0;
                if((
$filter[$pos]==='+')===$matched)
                    
$filter=CInlineFilter::create($controller,trim(substr($filter,0,$pos)));
            }
            else
                
$filter=CInlineFilter::create($controller,$filter);
        }
        elseif(
is_array($filter))  // array('path.to.class [+|- action1, action2]','param1'=>'value1',...)
        
{
            if(!isset(
$filter[0]))
                throw new 
CException(Yii::t('yii','The first element in a filter configuration must be the filter class.'));
            
$filterClass=$filter[0];
            unset(
$filter[0]);
            if((
$pos=strpos($filterClass,'+'))!==false || ($pos=strpos($filterClass,'-'))!==false)
            {
                
$matched=preg_match("/\b{$actionID}\b/i",substr($filterClass,$pos+1))>0;
                if((
$filterClass[$pos]==='+')===$matched)
                    
$filterClass=trim(substr($filterClass,0,$pos));
                else
                    continue;
            }
            
$filter['class']=$filterClass;
            
$filter=Yii::createComponent($filter);
        }

        if(
is_object($filter))
        {
            
$filter->init();
            
$chain->add($filter);
        }
    }
    return 
$chain;
}

Метод-фабрика CFilterChain. Этот метод создаёт экземпляр CFilterChain.

insertAt() метод

public void insertAt(integer $index, mixed $item)
$index integer указанная позиция.
$item mixed новый элемент
Исходный код: framework/web/filters/CFilterChain.php#111 (показать)
public function insertAt($index,$item)
{
    if(
$item instanceof IFilter)
        
parent::insertAt($index,$item);
    else
        throw new 
CException(Yii::t('yii','CFilterChain can only take objects implementing the IFilter interface.'));
}

Вставляет элемент в указанную позицию. Этот метод переопределяет родительскую реализацию, добавив дополнительную проверку добавляемого элемента. В частности, в список можно добавлять только объекты, реализующие IFilter.

run() метод

public void run()
Исходный код: framework/web/filters/CFilterChain.php#125 (показать)
public function run()
{
    if(
$this->offsetExists($this->filterIndex))
    {
        
$filter=$this->itemAt($this->filterIndex++);
        
Yii::trace('Running filter '.($filter instanceof CInlineFilter ? get_class($this->controller).'.filter'.$filter->name.'()':get_class($filter).'.filter()'),'system.web.filters.CFilterChain');
        
$filter->filter($this);
    }
    else
        
$this->controller->runAction($this->action);
}

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

© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CFilterChain

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API