Sto passando all'utilizzo di OOP per tutti i miei progetti, storicamente tutto ciò che ho creato è stato piuttosto ridotto e OOP non sembra essere una scelta efficiente, ma ora con grandi progetti lo è. Tuttavia, più recentemente mi sono imbattuto in domande sempre più "migliori pratiche" che ho e non riesco a trovare la risposta.Teoria PHP OOP - Errore durante la verifica all'interno o all'esterno della classe?
Per esempio, immaginate Ho la seguente:
class numbers{
function __construct($number){
$this->number = (int)$number;
}
function add($add){
$this->added = $this->number + $add;
}
function multiply($multiply){
$this->multiplied = $this->number * $multiply;
}
function minus($minus){
$this->minused = $this->number - $minus;
}
function number(){
return $this->number();
}
}
Ora diciamo che voglio applicare add
, quindi multiply
e poi minus
. Ogni stadio può fallire (non l'ho incluso nell'esempio, ma immagino che sia lì). Questo è dove il mio problema si trova, devo fare:
$numbers = new numbers(8);
if($numbers->add(7)){
if($numbers->multiply(6)){
if($numbers->minus(7){
echo $numbers->number();
}else{
echo 'error minusing';
}
}else{
echo 'error multiplying number';
}
}else{
echo 'error adding number';
}
O devo avere quella parte nel mio costruttore, come:
class numbers{
function __construct($number){
$this->add(6);
$this->multiply(9);
$this->minus(7);
if($this->error){
return false;
}else{
return true;
}
}
function add($add){
$this->added = $this->number + $add;
if(!this->added){
$this->error = "couldn't be added";
}
}
function multiply($multiply){
$this->multiplied = $this->number * $multiply;
if(!this->multiplied){
$this->error = "couldn't be multiplied";
}
}
function minus($minus){
$this->minused = $this->number - $minus;
if(!this->minused){
$this->error = "couldn't be minused";
}
}
function number(){
return $this->number();
}
function error(){
return $this->error();
}
}
e poi semplicemente fare:
$numbers = new numbers(5);
if($numbers){
echo $numbers->number();
}else{
echo $numbers->error();
}
Spiacente se l'esempio è lungo (anche ignorando gli errori, l'ho scritto qui solo per delineare quello che sto cercando di fare, questo non è il codice che sto usando ...) ma non so come esprimere la frase domanda senza un esempio. Fondamentalmente, dovrei controllare gli errori all'interno della classe o dovrei farlo fuori quando chiamo la classe?
@FrustratedWithFormsDesigner: Perché la modifica? Il metodo è chiamato 'meno' - è perfettamente accettabile utilizzare il modulo di verbo in questo caso. Penso che la tua modifica abbia reso la domanda più confusa, non meno. – Gian
@Gian: Quando si utilizza un nome di metodo come un verbo, di solito è meglio chiarire che si sta parlando del metodo, non di un verbo generale, più simile. Questo: "Voglio' add', quindi 'moltiplica' e quindi' meno'. " chiarisce che stai parlando di chiamare il metodo "meno", non cercando di usare male la parola "meno" come verbo. – FrustratedWithFormsDesigner
Nel mondo di lingua inglese, si chiama sottrazione. Meno è un segno. –