Originariamente inviato da daniele_dll
L'overloading funziona esclusivamente con tipi non primitivi quindi derivati degli oggetti (vostri oggetti in pratica) e gli array
non necessariamente 
codice:
class Collection extends TypeHintingOverload {
private $arrayList = array();
protected function push_1($primitive) {
$this->arrayList[] = $primitive;
return count($this->arrayList);
}
protected function push_2(Collection $c) {
$this->arrayList = array_merge($this->arrayList, $c->getList());
return count($this->arrayList);
}
public function getList(){
return $this->arrayList;
}
}
$c = new Collection;
$c->push("test");
exit(''.$c->push($c));
In pratica se sono tutti primitivi non è ammesso più di un metodo con quel numero di primitivi, se già il numero di primitivi è differente si.
Se c'è almeno un Type Hinting a seconda del tipo e/o della posizione (primo argomento, unico argomento, terzo argomento) possono esserci anche primitive.
L'overload ha senso con il type hinting, negli altri casi si aumentano solo i tempi di esecuzione perchè quello che si può fare con la __call, si può fare in qualunque metodo normale, tanto più che l'overload è dinamico
codice:
function pippo($a, $b = null, $c = true) { ... }
Il problema dell'overload, in PHP5, esiste proprio perchè hanno implementato il Type Hinting ma non hanno implementato l'overload esplicito ... ergo se ho un metodo come quello usato nel primo esempio
codice:
public function push(Collection $c) {
$this->arrayList = array_merge($this->arrayList, $c->getList());
return count($this->arrayList);
}
non ho modo di cambiare il tipo di dato in ingresso tantomeno il comportamento del metodo ... ecco perchè ho creato la classe TypeHintingOverload, perchè scrivere stdClass e fare checks come se fosse un parametro senza type hint, non avrebbe senso (mentre negli altri casi, senza Type Hinting esplicito ... non ha senso, secondo me, sfruttare __call, dato che di suo rallenta almeno di 3 volte l'esecuzione del codice e soprattutto non serve a niente, si fa il metodo somma, riferito all'esempio di PHP news, e si usa quello per decidere il da farsi)