Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427

    intercettare metodo chiamato

    Mi chiedevo come fosse possibile, ottenre il nome del metodo chiamato all'interno del costruttore.


    class mytest{

    function __construct(){
    // echo $metodo ;
    //stampa qui il metodo

    }

    private function test1(){

    echo "1";
    }

    private function test2(){

    echo "2";
    }


    }

    $obj = new mytest;
    $obj.test1();

    Il mio obiettivo è quello di ottenere il nome della funzione per poi fare un cottrollo prima che il metodo intervenga.
    Non posso farlo direttamente dentro il metodo proprio perchè l'azione di controllo è sempre uguale.
    grazie.
    2000 post e sono più vecchio di 4 anni...
    grazie a tutti....

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    ma il costruttore è chiamato quando crei l'oggetto, cioè quando fai "new", non quando chiami il metodo... prova invece a guardare qualcosa d'altro, tipo il metodo __call() oppure dichiara i vari metodi come protetti e usa _callStatic() per gestire la cosa...

  3. #3
    Purtroppo mi sembra che non ci sia modo.
    L'unica cosa che si avvicina è get_class_methods() che ritorna tutte i metodi della classe......non saprei come fare in questo caso.

    CIAO
    Ok-Web! OpenSource Development for Web 2.0 (HTML5 - CSS3 - JAVASCRIPT - PHP - JAVA and more...)

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    51
    E' la variabile o il dato all'interno del metodo che deve variare, non il nome del metodo. Credo tu stia agendo nel modo sbagliato.

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    Mi autocito... proteggendo i metodi e usando __callStatic secondo me puoi farcela (poi... se serve davvero... non so :))

    Originariamente inviato da eiyen
    ma il costruttore è chiamato quando crei l'oggetto, cioè quando fai "new", non quando chiami il metodo... prova invece a guardare qualcosa d'altro, tipo il metodo __call() oppure dichiara i vari metodi come protetti e usa _callStatic() per gestire la cosa...

  6. #6
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427
    in realtà devo controllare che non ci sia cache attiva in determinate query prima di eseguirle.

    Sto usando il nome delle funzioni per definire la key della cache.

    Sto pensando di semplificare il processo.
    Cmq per inteso non ho mai usato il metodo __callstatic, avete un breve esempio ?

    Se non sbaglio si utilizza solo in php 5.3.
    2000 post e sono più vecchio di 4 anni...
    grazie a tutti....

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    se dichiari un metodo statico inaccessibile (protetto) e dichiari anche il metodo __callStatic($nome, $argomenti), viene richiamato quest'ultimo con il nome del motodo invocato e degli argomenti passati... puoi quindi fare tutte le operazioni che vuoi e infine invocare il metodo "originale" (che dall'interno della classe è ovviamente accessibile)

    Una strada diversa è inserire in ogni metodo una chiamata a un metodo privato "Check()" (o simile) che faccia dei controlli prima del proseguimento delle operazioni (questa via secondo me è più pulita)

  8. #8
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427
    si capisco, ma i metodi possono aumentare sempre.

    Per questo secondo me l'approccio di utilizzare funzioni singole per ottenere dei dati specifici non è molto corretta.

    Credo che bypasserò tutto al model.
    Dovrei risolvere.
    2000 post e sono più vecchio di 4 anni...
    grazie a tutti....

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.