Classes
As classes são fundamentalmente a base do MicroFW por se tratar de uma estrutura orientada a objetos.
A classe representa o modelo da lógica de negócios da sua aplicação, é responsável pelo gerenciamento dos objetos e suas intâncias, armazenamento, recuperação e a manipulação de seus dados. A classe se comunica com a camada de visualização e o controlador da aplicação, fornecendo dados e atualizando seus estados.
Suas classes podem ser encontradas no diretório da aplicação src/Main/Common/Entity, é nesse diretório que você deverá criar seus modelos de classes.
Estrutura da classe
O MicroFW vêm com uma classe de modelo chamada de ModelClass, isso lhe dará acesso as lógicas predefinidas na aplicação. Ela também permite que você adicione a lógica que desejar para estar disponível a todas as classes que extender ModelClass.
Tabela do banco de dados
No exemplo acima, note que não foi definido qual é o nome da tabela no banco de dados correspondente ao nosso exemplo de classe. Com isso, a aplicação assumi por convenção que o nome da classe no plural será o nome da tabela no banco de dados, ou seja, exemples.
Caso deseje atribuir um nome de tabela diferente da convenção, você poderá atribuir manualmente como desejar, definindo uma variável $table_db na propriedade da sua classe.
Carimbos de tempo
Por padrão a aplicação espera que as colunas (datetime) create_at e updated_at existam na tabela do banco de dados correspondente a sua classe. A aplicação definirá automaticamente os valores dessas colunas quando uma linha for criada ou atualizada na tabela. Se você não tiver interesse que a aplicação gerencie essas colunas, você deve definir manualmente a variável $logTimestamp nas propriedades da sua classe com um valor false.
Chave primária
A aplicação assumirá por padrão o campo id como chave primária na tabela de banco de dados correspondente as classes. Se você desejar definir manualmente, poderá alterar a variável $table_db_primaryKey com o valor desejado, especificando com isso para cada classe uma coluna diferente que servirá como chave primária.
Campos de consultas like
Você poderá definir caso deseje quais campos durante as consultas a tabela do banco de dados da nossa classe a aplicação utilizará para fazer consultas com o operador LIKE. Por padrão, nenhuma coluna será utilizada. Caso deseje definir, poderá utilizar a variável $table_db_like especificando em formato de array os campos desejados.
Exemplo de criação de classe
A seguir você poderá ver um exemplo completo da criação de uma classe chamada Book, lembrando que para todos os campos adicionais criados, deverão ser implementados os métodos getters e setters correspondentes, pois será através deles que acessaremos as variáveis da nossa classe.
Inserindo dados no banco de dados
Felizmente o MicroFW facilita a meneira como é inserido um novo objeto na tabela do banco de dados, primeiramente é necessário instanciar a classe desejada (use Microfw\Src\Main\Common\Entity\SuaClasse;), e atribuir as informações desejadas. Após isso, é necessário apenas chamar o método setSave na intância do modelo, e veja a mágica acontecer.
Utilizaremos a classe criada acima para os próximos exemplos.
No exemplo acima inserimos um novo elemento na tabela book, com os atributos title e author. Quando chamamos o método setSave inserimos um novo elemento com essas informações no banco de dados. O logTimestamp created_at será definido automaticamente quando o método setSave for chamado.
Atualização
O setSave também poderá ser utilizado para atualizar um elemento na tabela do banco de dados. Praticamente igual ao exemplo anterior, a única diferença será atribuir um valor ao campo definido como primaryKey na classe instanciada, que nesse exemplo é id, que por não ter sido definido na variável $table_db_primaryKey ficou como o padrão da aplicação.
No exemplo acima atualizamos um elemento já existente na tabela book, com os atributos title e author. Quando chamamos o método setSave atualizamos o elemento com essas informações no banco de dados. Novamente o logTimestamp updated_at será definido automaticamente quando o método setSave for chamado.
Consultar
Após ter inserido dados em sua tabela associada a classe no banco de dados, você estará pronto para recuperar esses elementos através do método getAll() para recuperar todos os elementos da tabela.
Acima temos 3 exemplos de implementação do método getAll().
No primeiro exemplo a consulta é feita de maneira simples, instanciando a classe Book e solicitando a consulta através do método getAll(), trazendo todos os elementos da tabela Book do banco de dados.
No segundo exemplo a consulta é feita instanciando a classe Book e atribuindo um valor as variáveis setTitle e setAuthor, e solicitando a consulta através do método getAll(), trazendo os elementos da tabela Book do banco de dados que forem compatíveis com os valores solicitados, lembrando que na criação da classe Book definimos a variável $table_db_like.
No terceiro exemplo, podemos definir variáveis extras para a consulta através do método getAll(), como o $limit, responsável por limitar a quantidade de registros consultados, o $offset que determina a partir de qual linha da tabela os registros serão obtidos, o $order que determinará qual campo será utilizado para ordenar os registros (podendo ser ASC ou DESC, por exemplo author asc), e a variável $and_or (false ou true) que determinará se as variáveis fornecidas serão consultados utilizando o operador AND ou OR (title = 'exemple' AND/OR author = 'exemple'), trazendo os elementos da tabela Book do banco de dados que forem compatíveis com os valores solicitados.
Consulta única
É possível realizar consulta de um único registro de uma tabela do banco de dados associada a classe solicitada, para isso utilizaremos o método getOne($primaryKey) e informando o valor da chave primária atribuída a esse elemento, a aplicação retornará a linha do banco de dados desejada.