per quanto riguarda il typehinting vedi la risposta di .Kurt

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.
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.
Ad esempio per l'errore del database:

ho una classe generica che mi formata un messaggio in modo particolare
Codice PHP:
class cuteMsg {

  private 
$msg;

  public function 
__construct$msg ) {
    
$this->msg $msg;
  }

  public function 
cuteMessage() {
    return 
'<p class="cute">' $this->msg '</p>';
  }

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:
// tua classe db

  
public function getRawMessage() {
    return 
$this->errMessage;
  }

  public function 
getCuteMessage() {
    
$msg = new cuteMsg$this->errMessage );
    return 
$msg->cuteMessage()
  } 
in questo modo la classe db si serve/usa della classe cuteMsg per ritornare l'errore in maniera piu carina.
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..
Codice PHP:
class function {

  private 
$db;

  public function 
__constructdb $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();
  }

si potrebbe parlare per ore di questo argomento, intanto ti puoi interessare di aggregation, composition e inheritance..
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