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...