Salve a tutti!

in C++ (e non solo) esistono le "template class" cioé la possibilità di istruire il precompilatore in modo che generi alcune classi in compile-time.

Ad esempio, supponendo di aver bisogno di una classe stack (quindi con push, pop ecc ecc...) per numeri interi, dovremmo dichiararla e definirla... e se poi avessimo bisogno di una classe stack per numeri in virgola mobile dovremmo definire anche quella; idem con patate per uno stack di caratteri, puntatori, stringhe o qualsiasi altra classe valida di cui vogliamo "impilare" alcune istanze.

Il c++ ci viene incontro con i template... possiamo fare una cosa del genere:

codice:
// Questa classe é solo abbozzata, ma serve a far capire di cosa sto parlando.

template <class Type>
class Stack  {

  private:

  Type *stack;
  int top;
  const int maxSize;

  public:

    void Push(Type &val);
    void Pop(void);
    Type& Top(void);
};

/* Qui dovremmo definire i metodi dichiarati,
    ma omettiamo per brevità */
e poi possiamo fare così per "generare" classi Stack<Tipo_a_Scelta> in fase di precompilazione (il precompilatore penserà a tutto):

codice:
Stack<int> mioStackdiInteri();
Stack<double> mioStackdiDouble();
Stack<miaClasse> mioStackdiMiaClasse();

mioStackdiInteri.Push(2);
int i = mioStackdiInteri.Pop();

ecc ecc...
Si può fare la stessa cosa in PHP? Quale é il modo più "pulito"? Sono completamente fuori strada?

scusate se ho riportato del codice in C++, ma cercando la parola "template" abbinata a PHP escono una marea di cose che con le template class di cui parlo non hanno niente a che fare.

Grazie in anticipo!

PS:
so che in php il problema della classe stack non si pone, perché é facile in vari modi ottenere una classe che impili oggetti indipendentemente dal tipo... la mia situazione é un po piu intricata e il mio vero problema non é uno stack...