Συναρτήσεις
Table of Contents
Συναρτήσεις οριζόμενες από το χρήστη
Μια συνάρτηση μπορεί να οριστεί χρησιμοποιώντας την ακόλουθη σύνταξη:
Example#1 Ψευδοκώδικας που δείχνει τη χρήση μια συνάρτησης
<?php
function foo ($arg_1, $arg_2, ..., $arg_n)
{
echo "Example function.\n";
return $retval;
}
?>
Οποιοσδήποτε έγκυρος PHP κώδικας μπορεί να εμφανιστεί σε μια συνάρτηση, ακόμη και σε άλλες συναρτήσεις και σε ορισμούς κλάσεων (class).
Στην PHP 3, οι συναρτήσεις πρέπει να ορίζονται πριν γίνει κάποια αναφορά σ' αυτές. Τέτοια απαίτηση δεν υπάρχει στην PHP 4. Εκτός αν η συνάρτηση ορίζεται σε μια υπόθεση όπως μπορείτε να δείτε στα παρακάτω δύο παραδείγματα.
Όταν μια συνάρτηση ορίζεται με υποθετικό τρόπο όπως στα δυο παρακάτω παραδείγματα ο ορισμός της πρέπει να προηγείται από το σημείο στο οποίο καλείται.
Example#2 Υποθετικές συναρτήσεις
<?php
$makefoo = true;
/* We can't call foo() from here
since it doesn't exist yet,
but we can call bar() */
bar();
if ($makefoo) {
function foo ()
{
echo "I don't exist until program execution reaches me.\n";
}
}
/* Now we can safely call foo()
since $makefoo evaluated to true */
if ($makefoo) foo();
function bar()
{
echo "I exist immediately upon program start.\n";
}
?>
Example#3 Συναρτήσεις μέσα σε συναρτήσεις
<?php
function foo()
{
function bar()
{
echo "I don't exist until foo() is called.\n";
}
}
/* We can't call bar() yet
since it doesn't exist. */
foo();
/* Now we can call bar(),
foo()'s processesing has
made it accessable. */
bar();
?>
Η PHP δεν υποστηρίζει υπερφόρτωση συναρτήσεων (function overloading), ούτε είναι δυνατό να υπάρχουν μη-καθορισμένες ή ξανά-καθορισμένες συναρτήσεις που έχουν δηλωθεί προηγουμένως.
Note: Τα ονόματα των συναρτήσεων είναι case-insensitive, αλλά γενικά είναι καλή τακτική να καλούμε τις συναρτήσεις όπως εμφανίζονται στη δήλωση τους.
Η PHP 3 δεν υποστηρίζει μεταβλητές αριθμών ή παραμέτρους στις συναρτήσεις, παρόλο που οι προκαθορισμένες παράμετροι υποστηρίζονται (βλέπε Τιμές προκαθορισμένων παραμέτρων για περισσότερες πληροφορίες). Η PHP 4 υποστηρίζει και τα δυο: βλέπε Λίστες μεταβλητού μήκους παραμέτρων και τις αναφορές στις συναρτήσεις για τις func_num_args(), func_get_arg(), και func_get_args() για περισσότερες πληροφορίες.