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

    funzione con parametri variabili

    Ciao ragazzi, ho un piccolo problema da risolvere.
    Ho la necessità di chiamare dinamicamente una funzione, nel senso che i parametri che passo in ingresso variano di numero a seconda dei casi. Per esempio una volta potrei avere

    function($a,$b,$c)

    e un'altra volta

    function($a)

    e così via.
    Esiste la possibilità di realizzare una cosa del genere in php?
    Ringrazio e saluto.

  2. #2

  3. #3
    sicuro:

    fai
    function gigi($a, $b = null, $c = null){
    //tua funzione
    }

    Quando chiami gigi(1, 2, 3)

    nella funzione $a = 1, $b = 2, $c = 3

    Ma puoi anche chiamare gigi(1) e nella funzione avrai $a = 1, $b = null, $c = null

  4. #4
    Artorius, la tua tecnica può funzionare ma nel caso volessi generalizzare il sistema dovrei mettere un numero molto alto di valori "null", quelli che tu definisci come $b = null eccetera.
    Proprio perchè non posso sapere il limite massimo dei parametri; quello minimo invece è facile, essendo zero.

    I link di filippo.toso invece sono utili per capire quanti parametri ho passato...

    O uso tecnica Artorius, un po' brutal ma efficace o passo un solo array, che può essere lungo quanto vuole. Quest'ultima soluzione però mi costringe a riscrivere tutte le classi da zero

  5. #5
    Perchè non puoi utilizzare le altre funzioni suggerite per ottenere i valori di tutti i parametri passati?

  6. #6
    Originariamente inviato da filippo.toso
    Perchè non puoi utilizzare le altre funzioni suggerite per ottenere i valori di tutti i parametri passati?
    Mi spiego meglio, a me non serve sapere quanti parametri ho passato, bensì poterne passare un numero dinamico, cioè che si crea al momento.
    Ti faccio un esempio per chiarire:

    Codice PHP:

    for ($k 0$k $n$k++ )
      
    $object[$k] = new Object(i diversi parametri); 
    Vorrei usare questo sistema in una "superclasse" che mi permette di creare elenchi di oggetti. Però questi oggetti possono avere diverse quantità di elementi nel costruttore, in quanto la superclasse dovrebbe avere a che fare con classi di qualsiasi tipo.

    Forse è sbagliata l'architettura di fondo di quest'idea. :berto:
    Che ne dite?

  7. #7
    Originariamente inviato da Tobler
    a me non serve sapere quanti parametri ho passato, bensì poterne passare un numero dinamico, cioè che si crea al momento.
    Ti consiglio nuovamente di leggere questa pagina del manuale ufficiale:

    http://www.php.net/func_get_args (Example #1 func_get_args() example)

  8. #8
    Tobler, ma tu lo sai vero che il costruttore di una classe può essere definito quante volte vuoi, semplicemente cambiando il numeri dei parametri? Tu puoi creare due Classi nella stessa classe, creando due costruttori che settano le varibili in due modi diversi facendo poi delle funzionalità diversi a seconda di questi. Stesso discorso per i metodi.

  9. #9
    All'interno di una funzione puoi utilizzare alcune funzioni speciali:
    func_get_arg(0) - restituisce il parametro 0 (il conteggio inizia da 0)
    func_num_args() - restituisce il numero di parametri passati
    func_get_args() - restituisce un array contenente tutti i parametri passati

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.