Visualizzazione dei risultati da 1 a 3 su 3

Discussione: classi e metodi

  1. #1

    classi e metodi

    Sto sperimentando la realizzazione di alcune classi php e mi trovo di fronte a un quesito: mettiamo di avere una classe con due metodi, A e B, che ognuno a loro volta invoca il metodo C. Io voglio che il metodo C intercetti il metodo è stato invocato (se da A o da B). Allego un esempio funzionante, ma la soluzione che propongo è fin troppo banale, in quanto per ottenere il risultato ottenuto, ho passato un parametro attraverso il metodo invocante, ed è una cosa che non vorrei fare. ( dico una cavolata, non esiste qualcosa tipo get_parent_method()?)

    Codice PHP:
    <?php
    class prova {
        
        function 
    func_A() {
                
            
    $this->func_C("func_A");
                        
        }
        
        function 
    func_B() {
            
            
    $this->func_C("func_B");
            
        }
        
        function 
    func_C($method) {
            
            print(
    "func_C invoked from ".$method."
    "
    );
            
        }
        
    }


    $test=new prova();


    $test->func_A();
    $test->func_B();


    //return 
    //func_C invoked from func_A

    //func_C invoked from func_B

    ?>
    Se mi sono riuscito a spiegare, avete qualche idea?

  2. #2
    Utente di HTML.it L'avatar di Razorblade
    Registrato dal
    Feb 2002
    Messaggi
    1,308
    Non l'ho testata, vedi cosa ottieni

    Codice PHP:
      
    class prova {
        protected 
    $_method null;
        
        function 
    __call($method$arguments) {
          
    $this->_method $method;
        }
        
        function 
    func_A() {
                
            
    $this->func_C("func_A");
                        
        }
        
        function 
    func_B() {
            
            
    $this->func_C("func_B");
            
        }
        
        function 
    func_C() {
            print(
    "func_C invoked from ".$this->method."
    "
    );
            
        }
        

    Ciao

  3. #3
    Grazie Razorblade: il codice mi sembra non funzioni. Soprattutto non sono sicuro che __call si possa utilizzare anche su metodi già dichiarati nella classe, dovrebbe servire per gestire tutte le chiamate ai metodi non esistenti. Appunto perchè non sono sicuro ci ragiono un po' su.

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.