per quanto riguarda il typehinting vedi la risposta di .Kurt
se vuoi progettare tutto ad oggetti una classe chiamata "general_function" non la vedo molto bene.. è preferibile avere classi separate per gestire le relative funzioni.Originariamente inviato da Vincent_E
In function ho creato un metodo per stampare a video gli errori provenienti da db in formato "gradevole". Avrei potuto creare quel metodo direttamente all'interno della classe del db, ma il concetto mi servirà comunque per classi future.
Ad esempio per l'errore del database:
ho una classe generica che mi formata un messaggio in modo particolare
ora sulla classe db puoi fare in due modi, o ritorni il messaggio di errore puro e semplice o ritorni il messaggio di errore "carino":Codice PHP:
class cuteMsg {
private $msg;
public function __construct( $msg ) {
$this->msg = $msg;
}
public function cuteMessage() {
return '<p class="cute">' . $this->msg . '</p>';
}
}
in questo modo la classe db si serve/usa della classe cuteMsg per ritornare l'errore in maniera piu carina.Codice PHP:
// tua classe db
public function getRawMessage() {
return $this->errMessage;
}
public function getCuteMessage() {
$msg = new cuteMsg( $this->errMessage );
return $msg->cuteMessage()
}
Da notare il fatto che la classe db e la classe cuteMsg non hanno niente in comune e si occupano di cose totalmente diverse.
db usa la classe cuteMsg solo in quel metodo per quella determinata funzione quindi possiamo dire che cuteMsg esiste solo se è necessario avere il messaggio di errore formattato in un certo modo.
Diversamente dall'esempio precedente in cui db esiste all'interno dell'intera classe function e può essere disponibile in qualsiasi metodo della classe..
si potrebbe parlare per ore di questo argomento, intanto ti puoi interessare di aggregation, composition e inheritance..Codice PHP:
class function {
private $db;
public function __construct( db $db ) {
$this->db = $db;
}
public function toArray() {
// qui posso usare db
return $this->db->fetchArray();
}
public function toObject() {
// anche qui posso usare db
return $this->db->fetchObject();
}
}
Qui c'è qualcosa
http://php.net/manual/en/language.oop5.inheritance.php
http://www.devshed.com/c/a/PHP/Objec...o-Composition/
http://en.wikipedia.org/wiki/Aggrega...29#Aggregation
ecco