Spec-Zone.ru › CakePHP 3.1

Дерево поведения

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

Таблицы, прикрепляющие это поведение, должны содержать столбец, ссылающийся на родительскую строку, и два других числовых столбца (lft и rght), где неявный порядок будет кэшироваться.

Для получения дополнительной информации о том, что такое вложенный набор и как он работает, обратитесь к http://www.sitepoint.com/hierarchical-data-database-2/

Cake\ORM\Behavior реализует Cake\Event\EventListenerInterface использует Cake\Core\InstanceConfigTrait
Extended by Cake\ORM\Behavior\TreeBehavior
Пространство имен: Cake\ORM\Behavior
Расположение: ORM/Behavior/TreeBehavior.php

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

_ensureFieldsисходный код protected

_ensureFields( Cake\Datasource\EntityInterface $entity )

Убеждается, что предоставленная сущность содержит ненулевые значения для полей left и right

Параметры

Cake\Datasource\EntityInterface $entity
Сущность, для которой необходимо убедиться, что поля заполнены

_getMaxисходный код protected

_getMax( )

Возвращает максимальное значение индекса в таблице.

Возвращаемое значение

integer
int

_getNodeисходный код protected

_getNode( mixed $id )

Возвращает единственный узел из дерева по его первичному ключу

Параметры

mixed $id
Идентификатор записи.

Возвращаемое значение

Cake\ORM\Entity
\Cake\ORM\Entity

Исключения

Cake\Datasource\Exception\RecordNotFoundException
При отсутствии узла

_getPrimaryKeyисходный код protected

_getPrimaryKey( )

Возвращает единственное строковое значение, представляющее первичный ключ присоединенной таблицы

Возвращаемое значение

string
string

_moveDownисходный код protected

_moveDown( Cake\Datasource\EntityInterface $node , integer|boolean $number )

Вспомогательная функция, используемая с фактическим кодом для moveDown

Параметры

Cake\Datasource\EntityInterface $node
Узел, который нужно переместить
integer|boolean $number
На сколько позиций нужно переместить узел, или true для перемещения в последнюю позицию

Возвращаемое значение

Cake\ORM\Entity|boolean
$node Узел после перемещения или false при ошибке

Исключения

Cake\Datasource\Exception\RecordNotFoundException
При отсутствии узла

_moveUpисходный код protected

_moveUp( Cake\Datasource\EntityInterface $node , integer|boolean $number )

Вспомогательная функция, используемая с фактическим кодом для moveUp

Параметры

Cake\Datasource\EntityInterface $node
Узел, который нужно переместить
integer|boolean $number
На сколько позиций нужно переместить узел, или true для перемещения в первую позицию

Возвращаемое значение

Cake\ORM\Entity|boolean
$node Узел после перемещения или false при ошибке

Исключения

Cake\Datasource\Exception\RecordNotFoundException
При отсутствии узла

_recoverTreeисходный код protected

_recoverTree( integer $counter 0 , mixed $parentId null , integer $level -1 )

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

Параметры

integer $counter необязательный 0
Последнее значение левого столбца, которое было назначено
mixed $parentId необязательный null
идентификатор родителя уровня, который должен быть восстановлен
integer $level необязательный -1
Уровень узла

Возвращаемое значение

integer
Следующее значение для использования в левом столбце

_removeFromTreeисходный код protected

_removeFromTree( Cake\Datasource\EntityInterface $node )

Вспомогательная функция, содержащая фактический код для removeFromTree

Параметры

Cake\Datasource\EntityInterface $node
Узел, который нужно удалить из дерева

Возвращаемое значение

Cake\ORM\Entity|false
узел после удаления из дерева или false при ошибке

_scopeисходный код protected

_scope( Cake\ORM\Query $query )

Изменяет переданный запрос так, чтобы он возвращал только ограниченные записи, как определено в конфигурации дерева.

Параметры

Cake\ORM\Query $query
Запрос, который нужно изменить

Возвращаемое значение

Cake\ORM\Query
\Cake\ORM\Query

_setAsRootисходный код protected

_setAsRoot( Cake\Datasource\EntityInterface $entity )

Обновляет левое и правое поле для переданной сущности, чтобы ее можно было установить в качестве нового корня в дереве. Также изменяет порядок в остальной части дерева, чтобы структура оставалась корректной

Параметры

Cake\Datasource\EntityInterface $entity
Сущность, которая нужно установить в качестве нового корня

_setChildrenLevelисходный код protected

_setChildrenLevel( Cake\Datasource\EntityInterface $entity )

Установить уровень для потомков.

Параметры

Cake\Datasource\EntityInterface $entity
Сущность, потомки которой нужно обновить.

_setParentисходный код protected

_setParent( Cake\Datasource\EntityInterface $entity , mixed $parent )

Устанавливает правильные значения left и right для переданной сущности, чтобы ее можно было обновить до нового родителя. Также создает пробел в дереве, чтобы перемещение узла можно было выполнить без нарушения структуры.

Параметры

Cake\Datasource\EntityInterface $entity
Сущность, которую нужно переместить к новому родителю
mixed $parent
Идентификатор родителя, который нужно установить

Исключения

RuntimeException
если родитель, которому нужно установить сущность, недействителен

_syncисходный код protected

_sync( integer $shift , string $dir , string $conditions , boolean $mark false )

Вспомогательная функция, используемая для автоматического изменения значения столбцов left и right на определенную величину, соответствующую переданным условиям

Параметры

integer $shift
значение, используемое для изменения столбцов left и right
string $dir
Оператор, используемый для сдвига значения (+/-)
string $conditions
SQL фрагмент, используемый для сравнения left или right с ним.
boolean $mark необязательный false
устанавливается ли для обновленных значений метка, чтобы они не могли быть изменены последующими вызовами этой функции

_unmarkInternalTreeисходный код protected

_unmarkInternalTree( )

Вспомогательный метод, используемый для инвертирования знака столбцов left и right, которые меньше 0. Они были установлены в отрицательные значения ранее, поэтому их абсолютное значение не изменялось при выполнении других преобразований дерева.

afterSaveисходный код public

afterSave( Cake\Event\Event $event , Cake\Datasource\EntityInterface $entity )

Прослушиватель после сохранения.

Управляет обновлением уровня потомков текущей сохраненной сущности.

Параметры

Cake\Event\Event $event
событие beforeSave, которое было запущено
Cake\Datasource\EntityInterface $entity
сущность, которая будет сохранена
END_OF_DOCUMENT_MARKER

beforeDeletesource public

beforeDelete( Cake\Event\Event $event , Cake\Datasource\EntityInterface $entity )

Также удаляет узлы в поддереве сущности, подлежащей удалению

Параметры

Cake\Event\Event $event
Событие beforeDelete, которое было запущено
Cake\Datasource\EntityInterface $entity
Сущность, которая будет сохранена

beforeSavesource public

beforeSave( Cake\Event\Event $event , Cake\Datasource\EntityInterface $entity )

Обработчик перед сохранением. Прозрачно управляет установкой полей lft и rght, если поле parent включено в параметры, которые необходимо сохранить.

Параметры

Cake\Event\Event $event
Событие beforeSave, которое было запущено
Cake\Datasource\EntityInterface $entity
сущность, которая будет сохранена

Исключения

RuntimeException
если родитель, который нужно установить для узла, недействителен

childCountsource public

childCount( Cake\Datasource\EntityInterface $node , boolean $direct false )

Получить количество дочерних узлов.

Параметры

Cake\Datasource\EntityInterface $node
Сущность для подсчета дочерних элементов
boolean $direct необязательно false
указывает, нужно ли подсчитывать все узлы в поддереве или только непосредственных потомков

Возвращает

integer
Количество дочерних узлов.

findChildrensource public

findChildren( Cake\ORM\Query $query , array $options )

Получить дочерние узлы текущей модели

Доступные параметры:

  • for: Идентификатор записи для чтения.
  • direct: Булево значение, указывает нужно ли вернуть только непосредственных (true), или все (false) потомки, по умолчанию false (все потомки).

Если параметр direct установлен в true, возвращаются только непосредственные потомки (на основе поля parent_id)

Параметры

Cake\ORM\Query $query
Запрос.
array $options
Массив параметров, как описано выше

Возвращает

Cake\ORM\Query
\Cake\ORM\Query

Исключения

InvalidArgumentException
Если ключ 'for' не передан в $options

findPathsource public

findPath( Cake\ORM\Query $query , array $options )

Пользовательский метод поиска, который может быть использован для возвращения списка узлов от корня до определенного узла в дереве. Этот пользовательский метод поиска требует, чтобы ключ 'for' передавался в параметрах, содержащих идентификатор узла, для которого требуется получить путь.

Параметры

Cake\ORM\Query $query
Построенный запрос для изменения
array $options
Список параметров запроса

Возвращает

Cake\ORM\Query
\Cake\ORM\Query

Исключения

InvalidArgumentException
Если ключ 'for' отсутствует в параметрах

findTreeListsource public

findTreeList( Cake\ORM\Query $query , array $options )

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

Параметры

  • keyPath: Путь, разделенный точками, для извлечения поля, которое будет ключом массива, или замыкание для возврата ключа из предоставленной строки.
  • valuePath: Путь, разделенный точками, для извлечения поля, которое будет значением массива, или замыкание для возврата значения из предоставленной строки.
  • spacer: Строка, используемая в качестве префикса для обозначения глубины в дереве для каждого элемента

Параметры

Cake\ORM\Query $query
Запрос.
array $options
Массив параметров, как описано выше.

Возвращает

Cake\ORM\Query
\Cake\ORM\Query

formatTreeListsource public

formatTreeList( Cake\ORM\Query $query , array $options [] )

Форматирует запрос как плоский список, где ключи — первичный ключ таблицы, а значения — поле отображения для таблицы. Значения добавляются с префиксом, чтобы визуально указывать относительную глубину в дереве.

Параметры

  • keyPath: Путь, разделенный точками, для поля, которое будет ключом результирующего массива, или лямбда-выражение для возврата ключа из предоставленной строки.
  • valuePath: Путь, разделенный точками, для поля, которое является значением массива, или лямбда-выражение для возврата значения из предоставленной строки.
  • spacer: Строка, используемая в качестве префикса для обозначения глубины в дереве для каждого элемента.

Параметры

Cake\ORM\Query $query
Объект запроса для форматирования.
array $options необязательно []
Массив параметров, как описано выше.

Возвращает

Cake\ORM\Query
Расширенный запрос.

getLevelsource public

getLevel( integer|string|Cake\Datasource\EntityInterface $entity )

Возвращает уровень глубины узла в дереве.

Параметры

целое число|строка|Cake\Datasource\EntityInterface $entity
Сущность или первичный ключ, для которого нужно получить уровень.

Возвращает

integer|boolean
Целое значение уровня или false, если узел не существует.

initializesource public

initialize( array $config )

Метод хука конструктора.

Параметры

array $config
Параметры конфигурации, предоставленные этому поведению.

Переопределяет

Cake\ORM\Behavior::initialize()

moveDownsource public

moveDown( Cake\Datasource\EntityInterface $node , integer|boolean $number 1 )

Переупорядочивает узел без изменения родителя.

Если узел является последним потомком или является узлом верхнего уровня без последующего узла, этот метод вернет false.

Параметры

Cake\Datasource\EntityInterface $node
Узел для перемещения
целое число|логическое значение $number необязательно 1
Количество позиций для перемещения узла или true для перемещения в последнюю позицию

Возвращает

Cake\ORM\Entity|boolean
сущность после перемещения или false при ошибке

Исключения

Cake\Datasource\Exception\RecordNotFoundException
Когда узел не был найден

moveUpsource public

moveUp( Cake\Datasource\EntityInterface $node , integer|boolean $number 1 )

Переупорядочивает узел без изменения родителя.

Если узел является первым потомком или является узлом верхнего уровня без предыдущего узла, этот метод вернет false.

Параметры

Cake\Datasource\EntityInterface $node
Узел для перемещения
целое число|логическое значение $number необязательно 1
Количество позиций для перемещения узла, или true для перемещения в первую позицию

Возвращает

Cake\ORM\Entity|boolean
$node Узел после перемещения или false при ошибке

Исключения

Cake\Datasource\Exception\RecordNotFoundException
Когда узел не был найден

recoversource public

recover( )

Восстанавливает значения столбцов lft и right из иерархии, определенной столбцом parent.

removeFromTreesource public

removeFromTree( Cake\Datasource\EntityInterface $node )

Удаляет текущий узел из дерева, размещая его как новый корень и перемещая всех потомков на один уровень выше.

Обратите внимание, что узел не будет удален, а только перемещен из текущей позиции без перемещения его потомков.

Параметры

Cake\Datasource\EntityInterface $node
Узел для удаления из дерева

Возвращает

Cake\ORM\Entity|false
узел после удаления из дерева или false при ошибке

Методы, унаследованные от Cake\ORM\Behavior

__constructsource public

__construct( Cake\ORM\Table $table , array $config [] )

Конструктор

Объединяет конфигурацию со значениями по умолчанию и сохраняет результат в свойстве config

Параметры

Cake\ORM\Table $table
Таблица, к которой прикреплено данное поведение.
array $config необязательно []
Конфигурация для данного поведения.
END_OF_DOCUMENT_MARKER

_reflectionCachesource protected

_reflectionCache( )

Получает методы, реализованные этим поведением.

Использует метод implementedEvents(), чтобы исключить методы обратного вызова. Методы, начинающиеся с _ будут проигнорированы, так же как и методы, объявленные в Cake\ORM\Behavior.

Возвращает

array
массив

_resolveMethodAliasessource protected

_resolveMethodAliases( string $key , array $defaults , array $config )

Удаляет алиасы методов, которые в противном случае будут дублироваться конфигурацией пользовательского интерфейса.

Параметры

строка $key
Ключ для фильтрации.
массив $defaults
Стандартные отображения методов.
массив $config
Настраиваемые отображения методов.

Возвращает

array
Список конфигурации без дублирования.

implementedEventssource public

implementedEvents( )

Получает обратные вызовы модели, которыми интересуется данное поведение.

Определяя один из методов обратного вызова, предполагается, что поведение заинтересовано в соответствующем событии.

Переопределите этот метод, если вам нужно добавить слушатели событий нестандартного типа. Или если вы хотите, чтобы ваше поведение реагировало на нестандартные события.

Возвращает

array
массив

Реализация

Cake\Event\EventListenerInterface::implementedEvents()

implementedFinderssource public

implementedFinders( )

implementedFinders

Предоставляет отображение "алиас->имя_метода" реализованных поисковиков поведения. Пример:

[
  'this' => 'findThis',
  'alias' => 'findMethodName'
]

С использованием данного примера, вызов $Table->find('this') вызовет $Behavior->findThis(), а вызов $Table->find('alias') вызовет $Behavior->findMethodName()

Рекомендуется, хотя и не обязательно, определять implementedFinders в свойстве config дочерних классов, чтобы не было необходимости использовать рефлексию для получения доступного списка методов. Смотрите примеры в основных поведенческих моделях.

Возвращает

array
массив

implementedMethodssource public

implementedMethods( )

implementedMethods

Предоставляет отображение "алиас->имя_метода" реализованных методов поведения. Пример:

[
  'method' => 'method',
  'aliasedmethod' => 'somethingElse'
]

С использованием данного примера, вызов $Table->method() вызовет $Behavior->method(), а вызов $Table->aliasedmethod() вызовет $Behavior->somethingElse()

Рекомендуется, хотя и не обязательно, определять implementedFinders в свойстве config дочерних классов, чтобы не было необходимости использовать рефлексию для получения доступного списка методов. Смотрите примеры в основных поведенческих моделях.

Возвращает

array
массив

verifyConfigsource public

verifyConfig( )

verifyConfig

Проверяет, что реализованные ключи содержат значения, указывающие на вызываемые методы.

Выбрасывает

Cake\Core\Exception\Exception
если конфигурация неверна

Методы, используемые из Cake\Core\InstanceConfigTrait

_configDeletesource protected

_configDelete( string $key )

Удаление отдельного ключа конфигурации

Параметры

строка $key
Ключ для удаления.

Выбрасывает

Cake\Core\Exception\Exception
если попытка перезаписи существующей конфигурации

_configReadsource protected

_configRead( string|null $key )

Чтение переменной конфигурации

Параметры

строка|null $key
Ключ для чтения.

Возвращает

mixed
смешанный тип

_configWritesource protected

_configWrite( string|array $key , mixed $value , boolean|string $merge false )

Запись переменной конфигурации

Параметры

строка|массив $key
Ключ для записи.
смешанный тип $value
Значение для записи.
логическое|строка $merge необязательно false
True для рекурсивного слияния, 'shallow' для простого слияния, false для перезаписи, по умолчанию false.

Выбрасывает

Cake\Core\Exception\Exception
если попытка перезаписи существующей конфигурации

configsource public

config( string|array|null $key null , mixed|null $value null , boolean $merge true )

Использование

Чтение всей конфигурации:

$this->config();

Чтение определенного значения:

$this->config('key');

Чтение вложенного значения:

$this->config('some.nested.key');

Установка определенного значения:

$this->config('key', $value);

Установка вложенного значения:

$this->config('some.nested.key', $value);

Обновление нескольких настроек конфигурации одновременно:

$this->config(['one' => 'value', 'another' => 'value']);

Параметры

строка|массив|null $key необязательно null
Ключ для получения/установки или полный массив конфигураций.
смешанный тип|null $value необязательно null
Значение для установки.
логическое $merge необязательно true
Выполнять рекурсивное слияние или перезапись существующей конфигурации, по умолчанию true.

Возвращает

mixed
Значение конфигурации, которое читается, или сам объект при операциях записи.

Выбрасывает

Cake\Core\Exception\Exception
При попытке установить неверный ключ.

configShallowsource public

configShallow( string|array $key , mixed|null $value null )

Объединяет предоставленную конфигурацию с существующей конфигурацией. В отличие от config() , которая выполняет рекурсивное слияние для вложенных ключей, этот метод выполняет простое слияние.

Установка определенного значения:

$this->config('key', $value);

Установка вложенного значения:

$this->config('some.nested.key', $value);

Обновление нескольких настроек конфигурации одновременно:

$this->config(['one' => 'value', 'another' => 'value']);

Параметры

строка|массив $key
Ключ для установки или полный массив конфигураций.
смешанный тип|null $value необязательно null
Значение для установки.

Возвращает

mixed
$this Объект сам по себе.

Резюме свойств

$_defaultConfigsource

protected массив

Значения по умолчанию для конфигурации

Эти значения объединяются с предоставленными пользователем настройками при использовании поведения.

[
    'implementedFinders' => [
        'path' => 'findPath',
        'children' => 'findChildren',
        'treeList' => 'findTreeList'
    ],
    'implementedMethods' => [
        'childCount' => 'childCount',
        'moveUp' => 'moveUp',
        'moveDown' => 'moveDown',
        'recover' => 'recover',
        'removeFromTree' => 'removeFromTree',
        'getLevel' => 'getLevel',
        'formatTreeList' => 'formatTreeList'
    ],
    'parent' => 'parent_id',
    'left' => 'lft',
    'right' => 'rght',
    'scope' => null,
    'level' => null,
    'recoverOrder' => null
]

$_primaryKeysource

protected строка

Кэшированная копия первого столбца первичного ключа таблицы.

Свойства, унаследованные от Cake\ORM\Behavior

$_reflectionCachesource

protected static массив

Кэш отражения методов для поведений.

Хранит отраженные методы + методы поиска по классу. Это предотвращает многократное отражение одного и того же класса в одном процессе.

[]

$_tablesource

protected Cake\ORM\Table

Экземпляр таблицы.

Свойства, используемые из Cake\Core\InstanceConfigTrait

$_configsource

protected array

Конфигурация выполнения

[]

$_configInitializedsource

protected boolean

Указывает, была ли конфигурация уже настроена по умолчанию

false

© 2005–2016 The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
http://api.cakephp.org/3.1/class-Cake.ORM.Behavior.TreeBehavior.html

Spec-Zone.ru

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