Η πληροφορία μπορεί να περάσει στις συναρτήσεις διαμέσου της λίστας παραμέτρων, η οποία είναι μια λίστα μεταβλητών ή/και σταθερών που διαχωρίζονται με κόμματα.
Η PHP υποστηρίζει το πέρασμα των παραμέτρων με τιμή (το προκαθορισμένο), πέρασμα με αναφορά, και προκαθορισμένες τιμές παραμέτρων. Οι λίστες παραμέτρων μεταβλητού μήκους υποστηρίζονται μόνο από την PHP 4 και μετά. Βλέπε λίστες παραμέτρων μεταβλητού μήκους και τις αναφορές συναρτήσεων για τις func_num_args(), func_get_arg(), και func_get_args() για περισσότερες πληροφορίες. Ένα παρόμοιο αποτέλεσμα μπορεί να επιτευχθεί στην PHP 3 περνώντας ένας πίνακα παραμέτρων στη συνάρτηση:
Είναι προκαθορισμένο ότι οι παράμετροι των συναρτήσεων μεταβιβάζονται με τιμή (by value) (έτσι ώστε αν αλλάξετε την τιμή μιας παραμέτρου μέσα στη συνάρτηση, αυτή δεν αλλάζει έξω από τη συνάρτηση). Αν θέλετε να επιτρέψετε σε μια συνάρτηση να αλλάξει τις παραμέτρους της, θα πρέπει να τις περάσετε με αναφορά.
Αν θέλετε μια παράμετρος συνάρτησης να την περνάτε πάντα με αναφορά, μπορείτε να βάλετε ως πρόθεμα ένα ampersand (&) στο όνομα της παραμέτρου στόν ορισμό της συνάρτησης:
Μια συνάρτηση μπορεί να ορίσει προκαθορισμένες τιμές σαν τη C++ για βαθμωτές παραμέτρους ως ακολούθως:
Το αποτέλεσμα του παρακάτω κώδικα είναι:
Making a cup of cappuccino. Making a cup of espresso. |
Η προκαθορισμένη τιμή πρέπει να είναι μια σταθερή έκφραση, όχι (για παράδειγμα) μια μεταβλητή ή ένα μέλος μιας κλάσης.
Σημειώστε ότι όταν χρησιμοποιούμε προκαθορισμένες παραμέτρους, οποιεσδήποτε προκαθορισμένες θα πρέπει να είναι στη δεξιά μεριά από οποιεσδήποτε μη καθορισμένες παραμέτρους, διαφορετικά, τα πράγματα δε θα δουλέψουν όπως περιμένουμε. Θεωρείστε το ακόλουθο κομμάτι κώδικα:
Το αποτέλεσμα του παραπάνω παραδείγματος είναι:
Warning: Missing argument 2 in call to makeyogurt() in /usr/local/etc/httpd/htdocs/php3test/functest.html on line 41 Making a bowl of raspberry . |
Τώρα, συγκρίνετε το παραπάνω με αυτό:
Το αποτέλεσμα συτού του παραδείγματος είναι:
Making a bowl of acidophilus raspberry. |
Η PHP 4 υποστηρίζει λίστες παραμέτρων μεταβλητού μήκους στις συναρτήσεις που καθορίζονται από τον χρήστη. Αυτό είναι αρκετά εύκολο, χρησιμοποιώντας τις func_num_args(), func_get_arg(), και func_get_args() συναρτήσεις.
Δεν απαιτείται κάποια ιδιαίτερη σύνταξη, και οι λίστες παραμέτρων μπορούν με σαφήνεια να παραχθούν με τους ορισμούς των συναρτήσεων και να συμπεριφέρονται κανονικά.