Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di fabi080
    Registrato dal
    Mar 2002
    Messaggi
    442

    [PHP4] Oggetti e costruttori

    So che il supporto per gli oggetti in php4 non è granchè, ma ho trovato abbastanza utile la sintassi
    parent::metodo();
    per chiamare un metodo della classe padre.

    La mia domanda è la seguente: esiste una sintassi per chiamare il costruttore della classe padre che non faccia uso del nome della classe (per capirci l'equivalente di super(); in java).

    Tra l'altro mi sembra di aver letto che il costruttore senza parametri della classe figlia non richiama in automatico il costruttore senza parametri della classe padre (come avviene in java e C++), giusto?

  2. #2

    Re: [PHP4] Oggetti e costruttori

    Originariamente inviato da fabi080
    La mia domanda è la seguente: esiste una sintassi per chiamare il costruttore della classe padre che non faccia uso del nome della classe (per capirci l'equivalente di super(); in java).
    parent::costruttore() ;

    non fa uso del nome dela classe

    Tra l'altro mi sembra di aver letto che il costruttore senza parametri della classe figlia non richiama in automatico il costruttore senza parametri della classe padre (come avviene in java e C++), giusto?
    Sì è così, se la classe figlia non ha un costruttore viene chiamato il costruttore della classe padre, ma se la classe figlia ha un costruttore devi chiamare al suo interno

    parent::costruttore() ;
    per favore NIENTE PVT TECNICI da sconosciuti

  3. #3
    Utente di HTML.it L'avatar di fabi080
    Registrato dal
    Mar 2002
    Messaggi
    442

    Re: Re: [PHP4] Oggetti e costruttori

    Originariamente inviato da Fabio Heller
    parent::costruttore() ;

    non fa uso del nome dela classe
    Come no?! Se io ho

    codice:
    class A {
      function A() {...}
    }
    
    class B extends A {
      function B() {
        //per chiamare il costruttore della sovraclasse
        // devo conoscerne il nome
        parent::A();
        // oppure tu intendi
        parent::B(); <-chiama il costruttore di A?
      }
    }
    Potresti illuminarmi, grazie.

  4. #4
    Utente bannato
    Registrato dal
    Jun 2003
    Messaggi
    3,657
    da quello che ho capito se la classe B non ci sta nessun costruttore, viene kiamato il costruttore della classe padre.

    Mi sembra cmq normale che se tu vuoi kiamare il costruttore devi sapere il nome...tra l'altro nn ci vuole la scienza per capire il nome del costruttoer visto ke ha lo stesso nome della classe, non credi

  5. #5
    Utente di HTML.it L'avatar di fabi080
    Registrato dal
    Mar 2002
    Messaggi
    442
    Mi sembra cmq normale che se tu vuoi kiamare il costruttore devi sapere il nome...tra l'altro nn ci vuole la scienza per capire il nome del costruttoer visto ke ha lo stesso nome della classe, non credi
    E' una questione di manutenzione di codice, nel mio caso ho la seguente situazione: classe A e varie classi che estendono A, nel costruttore di queste classi richiamo esplicitamente il costruttore di A con $this->A, ora per altri motivi mi serve di inserire una classe B, che estende A e tutte le classi che estendevano A ora devono estendere B, quindi mi tocca cambiare manualmente oltre alla riga extends anche tutte le chiamate al costruttore, con una sintassi java-like questo non sarebbe stato necessario. Tutto qui, è solo una comodità/curiosità.
    E poi pensa che palle se ad esempio non esistesse $this e ogni volta che chiami un metodo dovessi scrivere $nome_lunghissimo_della_tua_classe->metodo.

  6. #6
    Utente di HTML.it L'avatar di fabi080
    Registrato dal
    Mar 2002
    Messaggi
    442

    Re: Re: Re: [PHP4] Oggetti e costruttori

    Originariamente inviato da fabi080
    codice:
    class A {
      function A() {...}
    }
    
    class B extends A {
      function B() {
        //per chiamare il costruttore della sovraclasse
        // devo conoscerne il nome
        parent::A();
        // oppure tu intendi
        parent::B(); <-chiama il costruttore di A?
      }
    }
    La sintassi parent::B() restituisce (a pensarci bene, giustamente)
    Fatal error: Call to undefined function: b() in ...

  7. #7
    Avevi parlato di "nome della classe", non di "nome del costruttore".

    In PHP4 devi conoscere il nome del costruttore, in PHP5 invece usi __construct
    per favore NIENTE PVT TECNICI da sconosciuti

  8. #8
    Utente di HTML.it L'avatar di fabi080
    Registrato dal
    Mar 2002
    Messaggi
    442
    Beh, nel mio caso sono la stessa cosa, cmq quindi la risposta definitiva è no.

    Grazie.

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.