Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Buenas galera,
Estava revisando reescrevendo alguns trechos dos meus códigos nesse final de semana e me deparei com a seguinte situação (vou usar exemplos menores para ilustrar):
Class Price {
public $preco;
public function validatePrice($param) {
//Validação para $preco
return $preco;
}
}
Class TextEntry {
public $textEntry;
public function validateTextEntry($param) {
//Validação e sanitização para o texto
return $textEntry;
}
}
Tenho diversas classes como essas.
E também:
require("class.validateTextEntry.php");
require("class.validatePrice.php");
Class ItemLine {
public $descricao;
public $preco;
public $itemline;
// @param = array()
public function mounItemLine($param) {
$OBJ_descricao = new TextEntry;
$decricao = $OBJ_descricao->textEntry->validateTextEntry($param['stringdetexto']);
$OBJ_preco = new Price;
$preco = $OBJ_preco->price->validatePrice($param['preco']);
$itemline = [ $descricao, $preco ];
return $itemline;
}
}
Essa classe irá montar uma outra, Relatorio e tals, com todas as linhas, etc, etc, etc. de acordo com cada usuário.
Aí me veio à cabeça... será que é o caso de criar uma classe apenas para abrigar os métodos de validação, sanitização e formatação?
Por que me parece muito desnecessário ter que declarar cada pedaço como um objeto.
Será que não seria o caso, simplesmente, de criar uma biblioteca de funções?
Ainda estou engatinhando em OO, me ajudem!!!
Valeu!
Então... sei que é possível fazer isso.
Tanto que quanto alterei minhas classes de validação para bibliotecas de funções (separadas por arquivo, de acordo com a responsabilidade de cada uma, etc), reduzi uns 30% o tamanho e a complexidade do código, já que eu não precisei mais instanciar um novo objeto, conectá-lo à respectiva propriedade e tals.
A dúvida é mais a respeito de best-pratice mesmo, já que se levarmos em consideração somente a simplicidade, estariamos todos trabalhando com programação procedural ainda hehehe
Valeu Paulinho!
Pode se usar uma classe static ou seja, pegar seu método e utilizar para algo.
ex: Check.class.php
<?php
class Check{
public static function Email($Email){
if( filter_var($Email, FILTER_VALIDATE_EMAIL) ):
return true;
else:
return false;
endif;
}
}
?>
Usando:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Usando o Check - Class</title>
</head>
<body>
<?php
require_once ("Check.class.php");
$Email = "a@a.a";
if(Check::Email($Email)):
echo "Validado com sucesso!";
else:
echo "Ops, erro ao validar.";
endif;
?>
</body>
</html>
Pode sim, um helper em MVC e dessa maneira, e uma varias funções para determinado caso.
ex. preco.php
{ if(!$Sigla):entre outras necessidades.