Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    570

    reflection class - getMethod

    ho un problema a cui non riesco a venire a capo...

    praticamente ho una classe che è l'estensione di una classe astratta.
    creo un reflection object della suddetta classe e chiamo getMethods.
    ottengo un array, giustamente, di tutti i metodi della classe.
    se però provo a chiamare getMethod inserendo un metodo della classe mi da sempre fatal error, mentre mi da il risultato normalmente se metto un metodo della classe astratta.

    vi è mai capitato?

    (potrei ovviare ovviamente usando getMethods e ciclando i risultati, ma mi sta sulle balle dover usare un foreach quando potrei prendere solo quello che voglio...)

  2. #2
    Ciao,
    magari se posti un minimo di codice .............


    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    570
    Codice PHP:

    # classe astratta

    abstract class config_config {
        
        public function 
    prova() {
            }

            private function 
    __construct() {
            }
        
    }

    # classe che estende quella astratta

    class config_initialize extends config_config {
        
        static private 
    $service;
        
        static public function 
    addService($service) {
            if (!
    self::$service instanceof service_service) {
                
    self::$service = new service_service();
            }
            
            
    self::$service->addService($service);
        }
        
        static public function 
    start() {
            
    self::$service->start();
        }

        public function 
    ciao() {
            }       



    le classi sono quelle sopra

    il codice di reflection:

    Codice PHP:

    $reflection 
    = new ReflectionClass($class);
    $method $reflection->getMethod('ciao'); 
    se metto ciao mi da fatal error, se metto prova va tutto bene.

  4. #4
    Codice PHP:
    private function __construct() {          } 
    private ?

    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    570
    sì, deve essere private, non deve essere possibile instanziare oggetti di quella classe.
    è un registry

  6. #6
    Originariamente inviato da nickcv
    sì, deve essere private, non deve essere possibile instanziare oggetti di quella classe.
    è un registry
    vuoi dire un singleton e sia con prova sia con ciao
    giustamente da


    codice:
    Fatal error: Call to private config_config::__construct()


    Ps
    magari lo hai gia visto
    http://www.sitepoint.com/forums/showthread.php?t=530917
    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    570
    Originariamente inviato da whisher
    vuoi dire un singleton e sia con prova sia con ciao
    giustamente da


    codice:
    Fatal error: Call to private config_config::__construct()

    inizio a pensare di non sapermi a quanto pare spiegare.

    1 - se sembro inacidito è perchè FF XIV è in manutenzione per la terza volta in 3 giorni <.<
    2 - singleton e registry sono due pattern diversi, simili, ma diversi
    3 - il codice di sopra è un dummy, non copio per intero 50 righe di classi, quindi è soggetto a errori
    4 - se provi a creare l'oggetto ovviamente muore con un fatal error, ma non è quello che sto facendo io. Io sto usando la reflection class solo perchè mi interessa controllare lo stato di un metodo e vedere se è statico o meno.


    dopo faccio uno screencast visto che a quanto pare parlo cileno e mi si risponde a dubbi che non ho mostrandomi cose che sono ovvie e già so...

    ps: chiedo ancora scusa per lo sfogo, accetto volontari per dare fuoco agli uffici di square enix.

    pss: ringrazio per il link, ma oltre ad avere studiato design pattern fino allo sfinimento e visto che sono Zend Certified Engineer credo di sapere come e quando usare un singleton (che questo non è comunque)

  8. #8
    codice:
    2 - singleton e registry sono due pattern diversi, simili, ma diversi
    diversi e simili mi piace.





    http://www.php.net/manual/en/reflect...stantiable.php
    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    570
    lol
    eccomi di nuovo

    comunque l'errore che a me da è questo

    Fatal error: Uncaught exception 'ReflectionException' with message 'Method ciao does not exist' in /Users/moro/Lavoro/Personale/CreationGears/index.php:16 Stack trace: #0 /Users/moro/Lavoro/Personale/CreationGears/index.php(16): ReflectionClass->getMethod('ciao') #1

    nonostante usando l'altro metodo reflection (ovvero getmethods) mi restituisca anche quella funzione nell'array

  10. #10
    Originariamente inviato da nickcv
    i solo perchè mi interessa controllare lo stato di un metodo e vedere se è statico o meno.


    http://stackoverflow.com/questions/1...ss-is-declared
    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

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.