Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826

    puntatori a funzione? reflection ?

    ciao.
    Vorrei fare una classe con varie funzioni pubbliche che hanno alla fine una stringa read e un codice di 4 cifre testuale.
    Ho visto qualche framework tipo symfony 2 e mi sono sempre chiesto come fa a estrarre e a lavorare sui metodi che hanno un nome specifico.
    Be tornando alla classe ad es
    codice:
    classe Read{
    public function readCCCC()
    {
    .... implementazione
    }
    public function readCCCA()
    {
    .... implementazione
    }
    public function readCCCB()
    {
    .... implementazione
    }
    }
    come posso fare avendo il codice a estrarre il puntatore a funzione(non sono pratico di php scusate)
    o comunque il metodo da eseguire che ha read all inizio e il codice alla fine , io ho i codici e voglio i metodi, ogni metodo avra una sua implementazione differente.
    è possibile ? è difficile ? si puo usare la reflection?
    voi cosa mi consigliate?

    ps. volevo automatizzare la cosa perchè ho un array che definisce tutti i codici e parametri e quindi basterebbe scorrere l'array , estrarre il codice , estrarre la funzione e richiamare la funzione con parametri fissi.
    grazie.

  2. #2
    Utente di HTML.it L'avatar di .Kurt
    Registrato dal
    Jul 2007
    Messaggi
    654
    Ho visto qualche framework tipo symfony 2 e mi sono sempre chiesto come fa a estrarre e a lavorare sui metodi che hanno un nome specifico.
    Non ho ben capito a cosa ti stai riferendo.
    come posso fare avendo il codice a estrarre il puntatore a funzione(non sono pratico di php scusate)
    Forse ti stai riferendo ai callback?
    codice:
    class Read{
        public function readCCCC()
        {
            //.... implementazione
        }
        public function readCCCA()
        {
            //.... implementazione
        }
        public function readCCCB()
        {
            //.... implementazione
        }
    }
    
    
    $code = 'CCCC';
    
    
    $obj = new Read();
    $callback = [$obj, 'read'.$code];
    
    
    // call the callback
    call_user_func_array($callback);
    I parametri puoi passarli a call_user_func_array come secondo argomento, vedi http://php.net/manual/en/function.ca...func-array.php
    voi cosa mi consigliate?
    Per rispondere a questa domanda dovresti scrivere anche cosa stai tentando di fare, e perché.

  3. #3
    Una cosa del genere?

    Codice PHP:
    <?php
    class Read {
        public function 
    readCCCC() {
            echo 
    "Read:readCCCC()";
        }

        public function 
    readCCCA() {
            echo 
    "Read:readCCCA()";
        }

        public function 
    readCCCB() {
            echo 
    "Read:readCCCB()";
        }
    }

    $code "CCCC";
    $reflectionMethod = new ReflectionMethod('Read''read'.$code);
    $reflectionMethod->invoke(new Read());
    ?>
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    Quote Originariamente inviata da .Kurt Visualizza il messaggio
    Non ho ben capito a cosa ti stai riferendo.
    Forse ti stai riferendo ai callback?
    codice:
    class Read{
        public function readCCCC()
        {
            //.... implementazione
        }
        public function readCCCA()
        {
            //.... implementazione
        }
        public function readCCCB()
        {
            //.... implementazione
        }
    }
    
    
    $code = 'CCCC';
    
    
    $obj = new Read();
    $callback = [$obj, 'read'.$code];
    
    
    // call the callback
    call_user_func_array($callback);
    I parametri puoi passarli a call_user_func_array come secondo argomento, vedi http://php.net/manual/en/function.ca...func-array.phpPer rispondere a questa domanda dovresti scrivere anche cosa stai tentando di fare, e perché.
    sto cercando di fare un parsing di un file con tracciato record a lunghezza fissa in cui per da una lunghezza ad un altra ci sta del testo che è definito da un codice nella documentazione e ogni codice ha le sue proprietà : validazione , input text in html ecc....
    Io vorrei creare un array con le definizioni(che sono dei codici)come chiave e i vari parametri se è numerico , se è richiesto eccccc.....
    Pensavo di mettere in un array tutti i codici e poi instanziare una classe per il parsing e una per la validazione e chiamare i metodi di queste classi per mezzo del codice cosi che se devo aggiungere qualcosa o cambiare implementazione non devo rifare tutto come se facessi uno switch ma basta cambiare le implementazioni delle varie funzioni che finiscono col codice.


    forse è un puo sembrare un po astruso ma secondo me se devo cambiare qualcosa è meglio ad es cambiare il validatore in uno switch è un casino , li posso fare una classe specifica e i metodi sono chiamati di default.
    grazie.
    ciao

  5. #5
    Guarda sopra.
    Abbiamo postato nello stesso momento.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    Quote Originariamente inviata da satifal Visualizza il messaggio
    Guarda sopra.
    Abbiamo postato nello stesso momento.
    ho visto , grazie è proprio quello che mi serviva.
    ciao

  7. #7
    banalmente potrebbe bastare anche http://php.net/manual/en/language.oo...hp#object.call
    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.