Questo è il schema di facciata e lo scopo è quello di fornire un facile accesso a compiti comuni o comunque complicati. Generalmente fornisce solo zucchero sintetico . Per confrontarlo con il mondo C # pensalo come i metodi di estensione:
Esempio di calcolo tradizionale dell'importo totale della transazione per un utente:
var total = 0f;
foreach(var transaction in User.transactions) {
total += transaction.Amount;
}
Utilizzando un metodo di estensione:
// Extension Method
public static float AccountBalance(this User user) {
var total = 0f;
foreach(var transaction in User.transactions) {
total += transaction.Amount;
}
return total;
}
// Using the extension method
user.AccountBalance();
Allo stesso modo accade lo stesso genere di cose usando il modello di facciata in PHP:
$total = 0;
foreach($user->trasnactions as $transaction) {
$total += $transaction->amount;
}
Con una facciata
<?php
class User {
public static function TotalTransactionSum($userid) {
$user = $userRepository->getById($userid);
$total = 0;
foreach($user->transaction as $transaction) {
$total += $transaction->amount;
}
return $total;
}
}
// Using the facade later
$total = User::TotalTransactionSum(1);