Mislim da nema osobe koja više voli da uopštava stvari od mene
Jedini razlog zbog kog volim PHP - fleksibilnost koju nudi. Umesto pisanja:
/**
* Ubacuje kupon u bazu.
*
* @return boolean
*/
public function save() {
if ($this->isValid()) {
$names = join(',', $this->names);
$phone_numbers = join(',', $this->phone_numbers);
$query = $db->connect()->prepare(
'INSERT INTO ' . Coupon::$table_name . ' (pyramid_id, names, phone_numbers) ' .
'VALUES (:pyramid_id, :names, :phone_numbers)'
);
$query->bindParam(':pyramid_id', $this->pyramid_id);
$query->bindParam(':names', $names);
$query->bindParam(':phone_numbers', $phone_numbers);
return $query->execute();
}
return false;
}
Sada imam opštu metodu u roditeljskoj klasi koja može da se primeni u svakoj potklasi:
/**
* Ubacuje objekat u bazu.
*
* @param string $table_name Ime tabele.
* @param array $fields_values Asocijativan niz polja i vrednosti.
* @return boolean
*/
public static function insert($table_name, $fields_values) {
global $db;
$fields_count = count(array_keys($fields_values));
$query_fields = join(',', array_keys($fields_values));
$query_values = join(',', array_fill(1, $fields_count, '?'));
$query = $db->connect()->prepare(
"INSERT INTO $table_name ($query_fields) VALUES ($query_values)"
);
for ($i = 1; $i <= $fields_count; $i++) {
$query->bindParam($i, array_values($fields_values)[$i-1]);
}
return $query->execute();
}
Tako da metoda save sada izgleda ovako:
/**
* Ubacuje kupon u bazu.
*
* @return boolean
*/
public function save() {
if ($this->isValid()) {
return ModelBase::insert(Coupon::$table_name, [
'pyramid_id' => $this->pyramid_id,
'names' => join(',', $this->names),
'phone_numbers' => join(',', $this->phone_numbers)
]);
}
return false;
}
Nisam hteo da koristim nikakav ORM jer je aplikacija jako mala, nema kompleksnih relacija i shvatio sam da bi mi više vremena otišlo na konfigurisanje nego na rad.
Ako vas je ikada zanimalo čime se ludaci bave dok pošten svet spava - evo vam odgovora
|