Welcome to the Cookbook

loading...

3.8 Behaviors

The original text for this section has changed since it was translated. Please help resolve this difference. You can:

More information about translations

Behaviors (ou comportamentos) de model são uma maneira de organizar algumas das funcionalidades definidas para models no CakePHP. Behaviors nos permitem separar lógica daquilo que não esteja diretamente relacionado aos models, mas precisa estar neles. Com uma maneira simples e poderosa de estender models, behaviors nos permitem anexar funcionalidades aos models definindo uma simples variável de classe. É assim que os behaviors permitem que os models se livrem de todo o peso extra que pode não ser parte do contrato de negócio que estão modelando ou que também seja necessário em diferentes models e podem ser extrapolados.

Como um exemplo, considere um model que nos dá acesso a uma tabela na base de dados que armazena informação estrutural sobre um árvore. Excluir, adicionar e mover nós na árvore não é tão simples quanto excluir, adicionar e modificar linhas na tabela. Muitos registros podem precisar ser atualizados conforme as coisas sejam movidas. Ao invés de criar estes métodos de manipulação de árvore na camada de model (para cada model que precise dessa funcionalidade), nós poderíamos simplesmente dizer para nosso model usar o TreeBehavior, ou em termos mais formais, diríamos que nosso model se comporta como uma árvore. Isto é conhecido como anexar um comportamento (behavior) a um model. Com apenas uma linha de código, nosso model em CakePHP ganha todo um novo conjunto de métodos que lhe permitem interagir com a estrutura de dados em questão.

O CakePHP já inclui comportamentos para estruturas em árvore, para conteúdos em diversos idiomas, para interação com listas de controle de acesso, e isso sem mencionar os behaviors desenvolvidos pela comunidade e que estão disponíveis no CakePHP Bakery (http://bakery.cakephp.org). Nesta seção iremos cobrir o padrão básico de utilização para adicionar comportamentos aos models, como usar os behaviors que já disponíveis por padrão no CakePHP e como criar os nossos próprios behaviors.