Balance
  • Namespace
  • Class
  • Tree

Namespaces

  • Balance
    • Db
      • TableGateway
    • Form
      • Element
      • Search
    • InputFilter
      • Search
    • Model
      • Persistence
        • Db
    • Mvc
      • Controller
    • Posting
    • Stdlib
      • Hydrator
        • Strategy
    • View
      • Table

Classes

  • Balance\Db\TableGateway\AbstractTableGatewayFactory
  • Balance\Form\Accounts
  • Balance\Form\Element\Boolean
  • Balance\Form\Element\Currency
  • Balance\Form\Element\DateTime
  • Balance\Form\Element\Select
  • Balance\Form\Postings
  • Balance\Form\Search\Accounts
  • Balance\Form\Search\Balance
  • Balance\Form\Search\Postings
  • Balance\InputFilter\Accounts
  • Balance\InputFilter\Postings
  • Balance\InputFilter\Search\Accounts
  • Balance\InputFilter\Search\Balance
  • Balance\InputFilter\Search\Postings
  • Balance\Model\AbstractModelFactory
  • Balance\Model\AccountType
  • Balance\Model\Balance
  • Balance\Model\BooleanType
  • Balance\Model\EntryType
  • Balance\Model\Model
  • Balance\Model\Persistence\Db\Accounts
  • Balance\Model\Persistence\Db\Balance
  • Balance\Model\Persistence\Db\Postings
  • Balance\Mvc\Controller\AbstractControllerFactory
  • Balance\Mvc\Controller\Accounts
  • Balance\Mvc\Controller\Configs
  • Balance\Mvc\Controller\Home
  • Balance\Mvc\Controller\Postings
  • Balance\Posting\Checker
  • Balance\Stdlib\Hydrator\Strategy\Datetime
  • Balance\View\Table\Table

Interfaces

  • Balance\Model\Persistence\PersistenceInterface
  • Balance\Model\Persistence\ValueOptionsInterface
  • Balance\Mvc\Controller\ModelAwareInterface
  • Balance\Mvc\Controller\RedirectRouteNameAwareInterface

Traits

  • Balance\Mvc\Controller\EditActionTrait
  • Balance\Mvc\Controller\IndexActionTrait
  • Balance\Mvc\Controller\ModelAwareTrait
  • Balance\Mvc\Controller\RedirectRouteNameAwareTrait
  • Balance\Mvc\Controller\RemoveActionTrait

Exceptions

  • Balance\Form\FormException
  • Balance\InputFilter\InputFilterException
  • Balance\Model\ModelException
  1 <?php
  2 
  3 namespace Balance\Model;
  4 
  5 use Balance\Model\Persistence\PersistenceInterface;
  6 use Zend\Form\Form;
  7 use Zend\Stdlib\Parameters;
  8 
  9 /**
 10  * Camada de Modelo
 11  *
 12  * Estrutura utilizada como padrão para processamento de informações apresentadas pela camada de controle durante o
 13  * fluxo de processamento do aplicativo. Centraliza a configuração de objetos de formulário e persistência de dados.
 14  */
 15 class Model
 16 {
 17     /**
 18      * Formulário
 19      * @type Form
 20      */
 21     private $form;
 22 
 23     /**
 24      * Formulário de Pesquisa
 25      * @type Form
 26      */
 27     private $formSearch;
 28 
 29     /**
 30      * Persistência de Dados
 31      * @type PersistenceInterface
 32      */
 33     private $persistence;
 34 
 35     /**
 36      * Construtor Padrão
 37      *
 38      * @param Form                 $form        Formulário
 39      * @param Form                 $formSearch  Formulário de Pesquisa
 40      * @param PersistenceInterface $persistence Persistência de Dados
 41      */
 42     public function __construct(Form $form, Form $formSearch, PersistenceInterface $persistence)
 43     {
 44         $this
 45             ->setForm($form)
 46             ->setFormSearch($formSearch)
 47             ->setPersistence($persistence);
 48     }
 49 
 50     /**
 51      * Configuração de Formulário
 52      *
 53      * @param  Form  $form Elemento para Configuração
 54      * @return Model Próprio Objeto para Encadeamento
 55      */
 56     protected function setForm(Form $form)
 57     {
 58         $this->form = $form;
 59         return $this;
 60     }
 61 
 62     /**
 63      * Apresentação de Formulário
 64      *
 65      * @return Form Elemento Solicitado
 66      */
 67     public function getForm()
 68     {
 69         return $this->form;
 70     }
 71 
 72     /**
 73      * Configuração de Formulário de Pesquisa
 74      *
 75      * @param  Form  $formSearch Elemento para Configuração
 76      * @return Model Próprio Objeto para Encadeamento
 77      */
 78     protected function setFormSearch(Form $formSearch)
 79     {
 80         $this->formSearch = $formSearch;
 81         return $this;
 82     }
 83 
 84     /**
 85      * Apresentação de Formulário de Pesquisa
 86      *
 87      * @return Form Elemento Solicitado
 88      */
 89     public function getFormSearch()
 90     {
 91         return $this->formSearch;
 92     }
 93 
 94     /**
 95      * Configuração de Persistência de Dados
 96      *
 97      * @param  PersistenceInterface $persistence Elemento para Configuração
 98      * @return Model                Próprio Objeto para Encadeamento
 99      */
100     protected function setPersistence(PersistenceInterface $persistence)
101     {
102         $this->persistence = $persistence;
103         return $this;
104     }
105 
106     /**
107      * Apresentação de Persistência de Dados
108      *
109      * @return PersistenceInterface Elemento Solicitado
110      */
111     public function getPersistence()
112     {
113         return $this->persistence;
114     }
115 
116     /**
117      * Consulta de Elementos
118      *
119      * @param  Parameters $params Parâmetros de Execução
120      * @return array      Conjunto de Informações Encontradas
121      */
122     public function fetch(Parameters $params)
123     {
124         // Formulário de Pesquisa
125         $form = $this->getFormSearch();
126         // Preencher Formulário
127         $form->setData($params);
128         // Validação
129         $form->isValid();
130         // Reiniciar Parâmetros
131         $params = new Parameters();
132         // Capturar Valores Válidos
133         foreach ($form->getInputFilter()->getValidInput() as $identifier => $input) {
134             $params[$identifier] = $input->getValue();
135         }
136         // Consulta de Elementos
137         return $this->getPersistence()->fetch($params);
138     }
139 
140     /**
141      * Carregar Elemento
142      *
143      * @param  Parameters $params Parâmetros de Execução
144      * @return array      Conjunto de Informações Encontradas
145      */
146     public function load(Parameters $params)
147     {
148         // Carregar Elementos
149         $element = $this->getPersistence()->find($params);
150         // Encontrado?
151         if (! $element) {
152             throw new ModelException('Unknown Element');
153         }
154         // Preencher Formulário
155         $this->getForm()->setData($element);
156         // Apresentação
157         return $element;
158     }
159 
160     /**
161      * Salvar Elemento
162      *
163      * @param  Parameters     $data Dados para Salvamento
164      * @throws ModelException Dados Inválidos
165      * @return Model          Próprio Objeto para Encadeamento
166      */
167     public function save(Parameters $data)
168     {
169         // Formulário
170         $form = $this->getForm();
171         // Configurar Dados
172         $form->setData($data);
173         // Dados Válidos?
174         if (! $form->isValid()) {
175             throw new ModelException('Invalid Data');
176         }
177         // Capturar Valores
178         $values = $form->getData();
179         // Salvar Dados
180         $this->getPersistence()->save(new Parameters($values));
181         // Encadeamento
182         return $this;
183     }
184 
185     /**
186      * Remover Elemento
187      *
188      * @param  Parameters     $params Parâmetros de Execução
189      * @throws ModelException Problema na Remoção do Elemento
190      * @return Model          Próprio Objeto para Encadeamento
191      */
192     public function remove(Parameters $params)
193     {
194         // Remover Elemento
195         $this->getPersistence()->remove($params);
196         // Encadeamento
197         return $this;
198     }
199 }
200 
Balance API documentation generated by ApiGen