Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    OOP polimorfismo nei metodi

    salve a tutti, ho da poco letto la guida php programmazione ad oggetti ma non ho capito come si possa ottenere un risultato tipo quello della funzione DATE(), mi spiego meglio:

    nella funzione date() c'è la possibilità di passare uno oppure due parametri (il formato della data, oppure il formato della data e il timestamp), quindi la funzione è come se ammettesse due metodi __costruct

    - date('formato');
    - date('formato', timestamp);

    ora come faccio a realizzare una classe che posso istanziare sia senza che con uno, due o tre parametri senza andare in errore di duplicazione? Ho provato sia con le interfacce che con le classi abstract ma vado sempre in errore. Si può fare con php? Che io mi ricordi in java ad esempio bastava definire una lista di parametri diversa per differenziare due metodi, quì è la stessa cosa?

    grazie

  2. #2
    is there anybody out there?

  3. #3
    allora, non sono espertone di php ma così ad occhio direi che date() non sia una classe/oggetto ma una funzione

    in quanto funzione, non ha metodi in overloading ma ha semplicemente una lista di parametri di cui il secondo opzionale (quindi con valore di default)... come tra l'altro si evince dalla guida eh...

    in php (almeno versione 5) non si può fare l'overloading quindi devi prevedere un metodo che accetti n parametri o cambiare nome al metodo (usando magari __call nei casi piu spinti)

    quindi, nel tuo caso:

    codice:
    class Obj{
    
       function __construct($param1, $param2 = 'foo'){   /* do something */ }
    
    }
    hai il primo parametro obbligatorio, il secondo opzionale ma con valore di default impostato a "foo"

    detto ciò, divertiti
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  4. #4
    grazie! quindi settando un valore di default per un parametro lo orendo opzionale nella chiamata al metodo. perfetto così, grazie ancora.

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.