Класс ModelBehavior
Базовый класс поведения модели.
Определяет интерфейс поведения и содержит общую функциональность взаимодействия с моделью. Поведения позволяют имитировать миксины и создавать многократно используемые блоки логики приложения, которые можно использовать в нескольких моделях. Поведения также предоставляют способ подключиться к обратным вызовам модели и расширить их поведение.
Методы миксинов
Поведения могут предоставлять функции, подобные миксинам, объявляя публичные методы. Эти методы должны ожидать, что экземпляр модели будет перенесен в список параметров.
function doSomething(Model $model, $arg1, $arg2) {
//do something
} Вызов будет выглядеть так: $this->Model->doSomething($arg1, $arg2);.
Картированные методы
Поведения также могут определять сопоставленные методы. Сопоставленные методы используют сопоставление шаблонов для вызова методов. Это позволяет создавать методы, подобные методам Model::findAllByXXX в ваших поведениях. Сопоставленные методы должны быть объявлены в вашем поведении в массиве $mapMethods. Подпись метода для сопоставленного метода немного отличается от обычного метода миксина поведения.
public $mapMethods = array('/do(\w+)/' => 'doSomething');
function doSomething(Model $model, $method, $arg1, $arg2) {
//do something
} Вышеупомянутое сопоставит каждый вызов метода doXXX() с поведением. Как вы можете видеть, модель по-прежнему является первым параметром, но имя вызываемого метода будет вторым параметром. Это позволяет изменять имя метода для получения дополнительной информации, подобно методам Model::findAllByXX.
- CakeObject
-
ModelBehavior
Прямые подклассы
См.: Model::$actsAs
См.: BehaviorCollection::load()
Авторские права: Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
Лицензия: MIT License
Расположение: Cake/Model/ModelBehavior.php
Резюме свойств
-
$mapMethodspublicarrayРазрешает сопоставление регулярных выражений, совместимых с preg, с публичными или закрытыми методами в этом классе, где ключ массива — это регулярное выражение, разделенное символом «/», а значение — это метод класса. Аналогично функциональности магических методов findBy* / findAllBy*.
-
$settingspublicarrayСодержит параметры конфигурации для использования с отдельными объектами моделей. Это используется, потому что, если несколько моделей используют это поведение, каждая из них будет использовать один и тот же экземпляр объекта. Настройки отдельных моделей должны храниться в виде ассоциативного массива, индексированного именем модели.
Резюме методов
- _addToWhitelist() protected
Если свойство $whitelist модели не пустое, $field будет добавлено в него. Примечание: этот метод следует использовать только в методах beforeValidate или beforeSave, чтобы убедиться, что он изменяет белый список только для текущей операции сохранения. Также убедитесь, что вы явно устанавливаете значение поля, которое вы разрешаете.
- afterDelete() publicВызывается после любой операции удаления связанной модели.
- afterFind() publicОбратный вызов после поиска. Может использоваться для изменения любых результатов, возвращаемых методом find.
- afterSave() publicafterSave вызывается после сохранения модели.
- afterValidate() public
afterValidate вызывается сразу после проверки данных модели. Вы можете использовать этот обратный вызов для выполнения любой очистки или подготовки данных, если это необходимо.
- beforeDelete() public
Before delete вызывается перед любой операцией удаления прикрепленной модели, но после вызова beforeDelete модели. Возвращение false из beforeDelete прервет удаление.
- beforeFind() public
beforeFind можно использовать для отмены операций поиска или изменения запроса, который будет выполнен. Возвращая null/false, вы можете прервать поиск. Возвращая массив, вы можете изменить/заменить запрос, который будет выполнен.
- beforeSave() public
beforeSave вызывается перед сохранением модели. Возвращение false из обратного вызова beforeSave прервет операцию сохранения.
- beforeValidate() public
beforeValidate вызывается перед проверкой модели. Вы можете использовать этот обратный вызов, чтобы добавить правила проверки поведения в массив проверки модели. Возвращение false позволит вам заставить проверку завершиться неудачей.
- cleanup() public
Очистка любых инициализаций, выполненных этим поведением для модели. Вызывается при динамической отвязке поведения от модели с помощью Model::detach().
- onError() publicОбратный вызов ошибки источника данных
- setup() publicНастройка этого поведения с заданными параметрами конфигурации.
Подробное описание методов
_addToWhitelist()source protected
_addToWhitelist( Model $model , string $field )
Если свойство $whitelist модели не пустое, $field будет добавлено в него. Примечание: этот метод следует использовать только в методах beforeValidate или beforeSave, чтобы убедиться, что он изменяет белый список только для текущей операции сохранения. Также убедитесь, что вы явно устанавливаете значение поля, которое вы разрешаете.
Параметры
-
Model$model - Модель, использующая это поведение
- строка
$field - Поле, которое должно быть добавлено в белый список $model
afterDelete()source public
afterDelete( Model $model )
Вызывается после любой операции удаления связанной модели.
Параметры
-
Model$model - Модель, использующая это поведение
afterFind()source public
afterFind( Model $model , mixed $results , boolean $primary false )
Обратный вызов после поиска. Может использоваться для изменения любых результатов, возвращаемых методом find.
Параметры
-
Model$model - Модель, использующая это поведение
- смешанный
$results - Результаты операции поиска
- логическое
$primaryнеобязательно false - Является ли эта модель непосредственно запрошенной (или запрошенной как ассоциация)
Возвращает
смешанныйЗначение массива заменит значение $results — любое другое значение будет проигнорировано.
afterSave()source public
afterSave( Model $model , boolean $created , array $options array() )
afterSave вызывается после сохранения модели.
Параметры
-
Model$model - Модель, использующая это поведение
- логическое
$created - True, если это сохранение создало новую запись
- массив
$optionsнеобязательно array() - Параметры, переданные из Model::save().
Возвращает
логическоеСм.
Model::save()afterValidate()source public
afterValidate( Model $model )
afterValidate вызывается сразу после проверки данных модели. Вы можете использовать этот обратный вызов для выполнения любой очистки или подготовки данных, если это необходимо.
Параметры
-
Model$model - Модель, использующая это поведение
Возвращает
смешанныйFalse останавливает передачу этого события другим поведениям
beforeDelete()source public
beforeDelete( Model $model , boolean $cascade true )
Before delete вызывается перед любой операцией удаления прикрепленной модели, но после вызова beforeDelete модели. Возвращение false из beforeDelete прервет удаление.
Параметры
-
Model$model - Модель, использующая это поведение
- логическое
$cascadeнеобязательно true - Если true, записи, зависящие от этой записи, также будут удалены
Возвращает
смешанныйFalse, если операция должна быть прервана. Любой другой результат продолжит выполнение.
beforeFind()source public
beforeFind( Model $model , array $query )
beforeFind можно использовать для отмены операций поиска или изменения запроса, который будет выполнен. Возвращая null/false, вы можете прервать поиск. Возвращая массив, вы можете изменить/заменить запрос, который будет выполнен.
Параметры
-
Model$model - Модель, использующая этот бихевиор
- массив
$query - Данные, используемые для выполнения этого запроса, например, условия, сортировка и т. д.
Возвращаемое значение
boolean|arrayFalse или null прервут операцию. Вы можете вернуть массив для замены $query, который будет в конечном итоге выполнен.
beforeSave()source public
beforeSave( Model $model , array $options array() )
beforeSave вызывается перед сохранением модели. Возвращение false из обратного вызова beforeSave прервёт операцию сохранения.
Параметры
-
Model$model - Модель, использующая этот бихевиор
- массив
$optionsнеобязательно array() - Параметры, переданные из Model::save().
Возвращаемое значение
mixedFalse, если операция должна быть прервана. Любой другой результат продолжит выполнение.
См. также
Model::save()beforeValidate()source public
beforeValidate( Model $model , array $options array() )
beforeValidate вызывается перед валидацией модели. Вы можете использовать этот обратный вызов для добавления правил валидации поведения в массив validate модели. Возвращение false позволит вам заставить валидацию завершиться неудачей.
Параметры
-
Model$model - Модель, использующая этот бихевиор
- массив
$optionsнеобязательно array() - Параметры, переданные из Model::save().
Возвращаемое значение
mixedFalse или null прервут операцию. Любой другой результат продолжит выполнение.
См. также
Model::save()cleanup()source public
cleanup( Model $model )
Очистка любых инициализаций, выполненных этим бихевиором в модели. Вызывается при динамическом отсоединении бихевиора от модели с помощью Model::detach().
Параметры
-
Model$model - Модель, использующая этот бихевиор
См. также
BehaviorCollection::detach()onError()source public
onError( Model $model , string $error )
Обработчик ошибок источника данных
Параметры
-
Model$model - Модель, использующая этот бихевиор
- строка
$error - Ошибка, сгенерированная в DataSource
setup()source public
setup( Model $model , array $config array() )
Настройка этого бихевиора с указанными настройками конфигурации.
Параметры
-
Model$model - Модель, использующая этот бихевиор
- массив
$configнеобязательно array() - Настройки конфигурации для $model
Методы, унаследованные от CakeObject
_mergeVars()source protected
_mergeVars( array $properties , string $class , boolean $normalize true )
Объединяет $property этого объекта с property в определении $class. Значение этого класса для свойства будет объединено поверх $class'
Это предоставляет часть магии DRY, предоставляемой CakePHP. Если вы хотите отключить её, переопределите этот метод как пустую функцию.
Параметры
- массив
$properties - Имя свойств для объединения.
- строка
$class - Класс для объединения свойства с.
- boolean
$normalizeнеобязательно true - Установите в true, чтобы запустить свойства через Hash::normalize() перед объединением.
_set()source protected
_set( array $properties array() )
Позволяет устанавливать несколько свойств объекта в одной строке кода. Будут установлены только свойства, которые являются частью объявления класса.
Параметры
- массив
$propertiesнеобязательно array() - Ассоциативный массив, содержащий свойства и соответствующие значения.
_stop()source protected
_stop( integer|string $status 0 )
Остановка выполнения текущего скрипта. Оборачивает exit(), что упрощает тестирование.
Параметры
- целое число|строка
$statusнеобязательно 0 - см. http://php.net/exit для значений
dispatchMethod()source public
dispatchMethod( string $method , array $params array() )
Вызывает метод этого объекта с заданными параметрами. Предоставляет объектно-ориентированную оболочку для call_user_func_array
Параметры
- строка
$method - Имя вызываемого метода
- массив
$paramsнеобязательно array() - Список параметров для использования при вызове $method
Возвращаемое значение
mixedВозвращает результат вызова метода
log()source public
log( string $msg , integer $type LOG_ERR , null|string|array $scope null )
Удобный метод для записи сообщения в CakeLog. Дополнительную информацию о записи в журналы см. в CakeLog::write().
Параметры
- строка
$msg - Сообщение журнала
- целое число
$typeнеобязательно LOG_ERR - Константа типа ошибки. Определена в app/Config/core.php.
- null|строка|массив
$scopeнеобязательно null Область(и), в которой создаётся сообщение журнала. Дополнительную информацию о областях ведения журнала см. в CakeLog::config().
Возвращаемое значение
booleanУспешность записи в журнал
requestAction()source public
requestAction( string|array $url , array $extra array() )
Вызывает метод контроллера из любого места. Может использоваться для подключения контроллеров или связывания плагинов с основным приложением. requestAction может использоваться для возврата отрисованных представлений или получения возвращаемого значения действий контроллера.
Под капотом этот метод использует Router::reverse() для преобразования параметра $url в строку URL. Вы должны использовать форматы URL, совместимые с Router::reverse().
Передача данных POST и GET
Данные POST и GET могут быть смоделированы в requestAction. Используйте $extra['url'] для данных GET. Параметр $extra['data'] позволяет моделировать данные POST.
Параметры
- строка|массив
$url Строка или массив, основанные на URL. В отличие от других массивов URL в CakePHP, этот URL не будет автоматически обрабатывать переданные и именованные аргументы в параметре $url.
- массив
$extraнеобязательно array() Если массив включает ключ "return", он устанавливает AutoRender в true. Также может использоваться для отправки данных GET/POST и именованных/переданных аргументов.
Возвращаемое значение
mixedBoolean true или false при успехе/неудаче или содержимое отрисованного действия, если 'return' установлен в $extra.
toString()source public
toString( )
Преобразование CakeObject в строку. Каждый класс может переопределять этот метод по мере необходимости.
Возвращаемое значение
строкаИмя этого класса
Подробности свойств
$mapMethodssource
public массив
Позволяет сопоставление регулярных выражений, совместимых с preg, с общедоступными или закрытыми методами в этом классе, где ключ массива — регулярное выражение с разделителями «/», а значение — метод класса. Аналогично функциональности магических методов findBy* / findAllBy*.
array()
$settingssource
public массив
Содержит параметры конфигурации для использования с отдельными объектами моделей. Это используется, потому что, если несколько моделей используют этот компонент, каждая будет использовать тот же экземпляр объекта. Параметры отдельных моделей должны храниться в ассоциативном массиве, индексированном по имени модели.
См. также
Model::$aliasarray()
© 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.
https://api.cakephp.org/2.9/class-ModelBehavior.html