Forum und email

Παράμετροι συναρτήσεων

Η πληροφορία μπορεί να περάσει στις συναρτήσεις διαμέσου της λίστας παραμέτρων, η οποία είναι μια λίστα μεταβλητών ή/και σταθερών που διαχωρίζονται με κόμματα.

Η PHP υποστηρίζει το πέρασμα των παραμέτρων με τιμή (το προκαθορισμένο), πέρασμα με αναφορά, και προκαθορισμένες τιμές παραμέτρων. Οι λίστες παραμέτρων μεταβλητού μήκους υποστηρίζονται μόνο από την PHP 4 και μετά. Βλέπε λίστες παραμέτρων μεταβλητού μήκους και τις αναφορές συναρτήσεων για τις func_num_args(), func_get_arg(), και func_get_args() για περισσότερες πληροφορίες. Ένα παρόμοιο αποτέλεσμα μπορεί να επιτευχθεί στην PHP 3 περνώντας ένας πίνακα παραμέτρων στη συνάρτηση:

Example#1 Περνώντας πίνακες στις συναρτήσεις

<?php
function takes_array($input)
{
    echo 
"$input[0] + $input[1] = "$input[0]+$input[1];
}
?>

Κάνοντας τις παραμέτρους να περνάνε με αναφορά

Είναι προκαθορισμένο ότι οι παράμετροι των συναρτήσεων μεταβιβάζονται με τιμή (by value) (έτσι ώστε αν αλλάξετε την τιμή μιας παραμέτρου μέσα στη συνάρτηση, αυτή δεν αλλάζει έξω από τη συνάρτηση). Αν θέλετε να επιτρέψετε σε μια συνάρτηση να αλλάξει τις παραμέτρους της, θα πρέπει να τις περάσετε με αναφορά.

Αν θέλετε μια παράμετρος συνάρτησης να την περνάτε πάντα με αναφορά, μπορείτε να βάλετε ως πρόθεμα ένα ampersand (&) στο όνομα της παραμέτρου στόν ορισμό της συνάρτησης:

Example#2 Περνώντας παραμέτρους συναρτήσεων με αναφορά

<?php
function add_some_extra(&$string)
{
    
$string .= 'and something extra.';
}
$str 'This is a string, ';
add_some_extra($str);
echo 
$str;    // outputs 'This is a string, and something extra.'
?>

Προκαθορισμένες τιμές συναρτήσεων

Μια συνάρτηση μπορεί να ορίσει προκαθορισμένες τιμές σαν τη C++ για βαθμωτές παραμέτρους ως ακολούθως:

Example#3 Χρήση προκαθορισμένων παραμέτρων σε μια συνάρτηση

<?php
function makecoffee ($type "cappuccino")
{
    return 
"Making a cup of $type.\n";
}
echo 
makecoffee ();
echo 
makecoffee ("espresso");
?>

Το αποτέλεσμα του παρακάτω κώδικα είναι:

Making a cup of cappuccino.
Making a cup of espresso.
     

Η προκαθορισμένη τιμή πρέπει να είναι μια σταθερή έκφραση, όχι (για παράδειγμα) μια μεταβλητή ή ένα μέλος μιας κλάσης.

Σημειώστε ότι όταν χρησιμοποιούμε προκαθορισμένες παραμέτρους, οποιεσδήποτε προκαθορισμένες θα πρέπει να είναι στη δεξιά μεριά από οποιεσδήποτε μη καθορισμένες παραμέτρους, διαφορετικά, τα πράγματα δε θα δουλέψουν όπως περιμένουμε. Θεωρείστε το ακόλουθο κομμάτι κώδικα:

Example#4 Λανθασμένη χρήση από προκαθορισμένες παραμέτρους συνάρτησης

<?php
function makeyogurt ($type "acidophilus"$flavour)
{
    return 
"Making a bowl of $type $flavour.\n";
}
 
echo 
makeyogurt ("raspberry");   // won't work as expected
?>

Το αποτέλεσμα του παραπάνω παραδείγματος είναι:

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 .
     

Τώρα, συγκρίνετε το παραπάνω με αυτό:

Example#5 Σωστή χρήση από προκαθορισμένες παραμέτρους συνάρτησης

<?php
function makeyogurt ($flavour$type "acidophilus")
{
    return 
"Making a bowl of $type $flavour.\n";
}
 
echo 
makeyogurt ("raspberry");   // works as expected
?>

Το αποτέλεσμα συτού του παραδείγματος είναι:

Making a bowl of acidophilus raspberry.
     

Λίστες μεταβλητού μήκους παραμέτρων

Η PHP 4 υποστηρίζει λίστες παραμέτρων μεταβλητού μήκους στις συναρτήσεις που καθορίζονται από τον χρήστη. Αυτό είναι αρκετά εύκολο, χρησιμοποιώντας τις func_num_args(), func_get_arg(), και func_get_args() συναρτήσεις.

Δεν απαιτείται κάποια ιδιαίτερη σύνταξη, και οι λίστες παραμέτρων μπορούν με σαφήνεια να παραχθούν με τους ορισμούς των συναρτήσεων και να συμπεριφέρονται κανονικά.