Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Template Class con PHP

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2008
    Messaggi
    2

    Template Class con PHP

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

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    114
    Al di la del fatto che c++ viene compilato mentr php è solo un linguaggio di scripting... non credo esistano cose simili (se ho ben capito la natura delle template class).

    Gabriele

  3. #3
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230

    Re: Template Class con PHP

    Originariamente inviato da leo128
    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...
    Beh, e' proprio questo il discorso: le class templates del c++ servono per non avere codice ripetuto con le stesse funzionalita' ma con datatypes diversi. Essendo php un linguaggio debolmente tipizzato, non c'e' nessun bisogno delle class templates. Puoi tranquillamente usare lo stesso codice di una funzione/classe per lavorare con interi/stringhe/quello_che_vuoi.

    Quindi forse e' meglio se spieghi il tuo vero problema

  4. #4
    quello che C++ chiama Template Class si chiama Tipi Generici in altri linguaggi

    considerando che PHP non è fortemente tipizzato, puoi fare la tua classe stack come ti pare con la solita sintassi

    class Stack{

    }

    oppure

    interface Stack{

    }

    se poi vuoi creare implementazioni particolari a seconda dei tipi passati

    Cmq, se il problema è un altro, allora perchè parlare di classi template?
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.