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. 

 

php
namespace Microfw\Src\Main\Common\Entity; 

class Example extends ModelClass{
//TODO: aqui será introduzido os atributos da classe.
}

 


 

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. 

 

php
namespace Microfw\Src\Main\Common\Entity; 

class Example extends ModelClass{
//TODO: Nome da tabela associada ao banco de dados.
protected $table_db = 'example' ;
}

 


 

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. 

 

php
namespace Microfw\Src\Main\Common\Entity; 

class Example extends ModelClass{
//TODO: Faz com que a aplicação não gerencie os campos create_at e updated_at automaticamente.
protected $logTimestamp = 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.

 

php
namespace Microfw\Src\Main\Common\Entity; 

class Example extends ModelClass{
//TODO: define manualmente a coluna da chave primária dessa classe na tabela.
protected $table_db_primaryKey = 'example_id' ;
}

 


 

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.

 

php
namespace Microfw\Src\Main\Common\Entity; 

class Example extends ModelClass{
//TODO: define os campos que utilizarão as consultas com o operador like.
protected $table_db_like = ['example_title', 'example_description'] ;
}

 


 

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.

 

php
namespace Microfw\Src\Main\Common\Entity; 

class Book extends ModelClass {

protected $table_db = 'my_books' ;
protected $table_db_like = ['title', 'author'] ;
protected $id ;
protected $title ;
protected $author ;

public function getId (){
return $this ->id ;
}


public function getTitle (){
return $this ->title ;
}


public function getAuthor (){
return $this ->author ;
}


public function setId ( $id ){
$this ->id = $id ;
}


public function setTitle ( $title ){
$this ->title = $title ;
}


public function setAuthor ( $author ){
$this ->author = $author ;
}

}

 


 

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.

 

php
use Microfw\Src\Main\Common\Entity\Book; 

$book = new Book();
$book->setTitle('aqui o título');
$book->setAuthor('aqui o nome do autor');
$book->setSave();

 

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.

 

php
use Microfw\Src\Main\Common\Entity\Book; 

$book = new Book();
$book->setId('1');
$book->setTitle('aqui o título');
$book->setAuthor('aqui o nome do autor');
$book->setSave();

 

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.

 

php
//Exemplo 1

use Microfw\Src\Main\Common\Entity\Book; 

$book = new Book();
$book = $book->getAll();
foreach( $book as $book ){
echo $book->getId();
echo $book->getTitle();
echo $book->geAuthor();
}

//Exemplo 2

use Microfw\Src\Main\Common\Entity\Book; 

$book = new Book();
$book->setTitle('exempleTitle');
$book->setAuthor('exempleAuthor');
$book = $book->getAll();
foreach( $book as $book ){
echo $book->getId();
echo $book->getTitle();
echo $book->getAuthor();
}

//Exemplo 3

use Microfw\Src\Main\Common\Entity\Book; 

$book = new Book();
$book = $book->getAll($limit, $offset, $order, $and_or);
foreach( $book as $book ){
echo $book->getId();
echo $book->getTitle();
echo $book->getAuthor();
}

 

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.

 

php

use Microfw\Src\Main\Common\Entity\Book; 

$book = new Book();
$book = $book->getOne(1);
echo $book->getId();
echo $book->getTitle();
echo $book->geAuthor();