Packages ou Pacotes é uma forma fácil para você desenvolvedor incluir uma ou mais funções, classes ou códigos em um Controller específico ou globalmente em sua aplicação, de forma que você possa utilizar seu código quando e onde quiser.
Nós disponibilizamos alguns Packages padrões para seu Projeto, vamos falar sobre 3 deles.
BRFormat é um pacote para você utilizar máscaras em números de Telefone, CEP, CPF, CNPJ, Dinheiro, etc (apenas Backend), com ele você pode remover pontuações de um CPF por exemplo, ou adicionar. O Package é tão simples que vale a pena dar um exemplo:
Supondo que temos o CPF 123.456.789-00 dessa forma e queremos remover os pontos e o traço, como fazemos?
$str = str_replace('.', '', $cpf);
$str = str_replace('-', '', $str);
$str = str_split($cpf);
$str = $str[0] . $str[1] . $str[2] // ...
// Não, não faremos assim. É pra isso que serve o BRFormat, vejamos:
$newCPF = BRFormat::cpf($newCPF); // output: 12345678900
// Agora, caso o CPF seja 12345678900, podemos também colocar as pontuações nele
$newCPF = BRFormat::cpf($newCPF); // output: 123.456.789-00
Ou seja, você utiliza a mesma função. Se O CPF tiver com máscara ela irá retirar, do contrário irá colocar a máscara. O mesmo para os outros.
BRFormat: máscaras disponíveis (Harpia v0.1.0)
Method name |
---|
BRFormat::cep($valor) |
BRFormat::phone($valor) |
BRFormat::money($valor) |
BRFormat::cnpj($valor) |
BRFormat::cpf($valor) |
HDate é um Package específico para trabalhar com datas no Harpia. Você pode adicionar/remover dias de uma data ou retornar a diferença entre duas datas.
Method name | Description |
---|---|
HDate::add($date, $interval) | Param 1: data, param 2: dias/meses/anos a serem adicionados à data (param 1) |
HDate::subtract($date, $interval) | Param 1: data, param 2: dias/meses/anos a serem subtraídos da data (param 1) |
HDate::calc($date, $interval) | Param 1: data, param 2: dias/meses/anos a serem adicionados/subtraídos à data (param 1). Diferente dos métodos acima aqui você deve utilizar o operador (+ ou -) |
HDate::diff($date1, $date2, $in) | Retorna a diferença de milisegundos/segundos/dias/meses/anos de duas datas diferentes. Ex: HDate::diff('10-10-2020', '11-10-2020', 'd') -> 1. $in (param 3) pode ser d, h, m, s, sendo: diferença em dias, horas, minutos, segundos. |
Validator é uma classe para validação. Use-a para validar inputs do frontend.
Abaixo você vê um código de uma validação de nome, login e senha:
$valid = Validator::get([
[$request->body->name => 'required|letters:allowSpaces|length:4-60', 'nome' => 'field'],
[$request->body->login => 'required|username|length:4-200', 'login' => 'field'],
[$request->body->password => 'required|length:4-20', 'senha' => 'field'],
]);
Retornará true caso tudo seja válido ou um array de erros. Ou seja, para verificar se é válido nesse caso, você deve fazer:
if ($valid === true) {
// code
}
Você precisa usar o método Validator::get() passando um array, dentro de array deve conter outros arrays com as validações.
Veja outro exemplo:
$nomeValido = Validator::get([
[$_POST['nome'] => 'required|letters|minlength:4|maxlength:60', 'nome' => 'field']
]);
Caso $_POST['NOME'] seja um valor inválido, ele retornará um array semelhante à esse:
Array (
['nome'] => [
// Erros
]
)
Ou seja é um Array de erros dentro de outro array.
Como você pôde ver, citamos 3 pacotes padrões do Harpia para funcionalidades diversas, e você pode criar pacotes também sem precisar alterar o código fonte do Harpia.
Há dois métodos para utilizar um Package, o primeiro é globalmente em sua aplicação, outro é em alguma função do controller, view, etc.
Você pode usar o arquivo /app_old/global.packages.php para isso. Utilize a função
Package::use('PackageName');
// Exemplo usando pacotes padrões do Harpia citados:
Package::use('harpia/Validator')
Package::use('harpia/BRFormat')
Package::use('harpia/HDate')
Ou seja, Package::use aponta para a pasta /app_old/package/ e você pode escrever apenas o diretório do arquivo e o nome do mesmo, sem a extensão.
Como os pacotes Validator, BRFormate HDate estão dentro da pasta harpia/ utilizamos harpia/NomeDoPacote.
Para usar um Package localmente, por exemplo: dentro de um controller, você deve utilizar o mesmo método da classe Package, mas dentro do escopo global do controller ou dentro de uma função.
// Escopo global
Package::use('harpia/Validator')
Package::use('harpia/BRFormat')
class PanelController
{
// code
}
// Escopo local
class PanelController
{
public function index()
{
Package::use('harpia/Validator')
Package::use('harpia/BRFormat')
}
}