⊗ppSpFnCb 11 of 83 menu

Συναρτήσεις επανάκλησης (Callbacks) στην PHP

Συνάρτηση επανάκλησης (Callback) ονομάζεται μια συνάρτηση, που μεταβιβάζεται ως παράμετρος σε μια άλλη συνάρτηση.

Ας δούμε ένα παράδειγμα. Ας υποθέσουμε ότι έχουμε μια συνάρτηση που αποδέχεται ως πρώτη παράμετρο έναν αριθμό, και ως δεύτερη παράμετρο - μια συνάρτηση επανάκλησης:

<?php function func($num, $calb) { } ?>

Ας κάνουμε έτσι ώστε μέσα στη συνάρτηση η συνάρτηση επανάκλησης μας να κληθεί για τον αριθμό που μεταβιβάστηκε:

<?php function func($num, $calb) { echo $calb($num); } ?>

Ας δούμε τώρα ποιες επιλογές έχουμε για τη μεταβίβαση της συνάρτησης επανάκλησης στη συνάρτησή μας.

Επιλογή 1

Η συνάρτηση επανάκλησης μας μπορεί να είναι μια συνηθισμένη συνάρτηση:

<?php function calb($num) { return $num ** 2; } ?>

Σε αυτή την περίπτωση, ως συνάρτηση επανάκλησης θα μεταβιβάσουμε το όνομα της συνάρτησής μας:

<?php func(3, 'calb'); ?>

Μέσα στη συνάρτηση func η συνάρτηση επανάκλησης θα κληθεί με βάση το όνομά της.

Επιλογή 2

Η συνάρτηση επανάκλησης μας μπορεί να είναι μια ανώνυμη συνάρτηση, που έχει αποθηκευτεί σε μια μεταβλητή:

<?php $calb = function($num) { return $num ** 2; }; ?>

Σε αυτή την περίπτωση, μεταβιβάζουμε ως παράμετρο τη μεταβλητή που περιέχει τη συνάρτησή μας:

<?php func(3, $calb); ?>

Επιλογή 3

Μπορούμε να μεταβιβάσουμε την ανώνυμη συνάρτηση αμέσως ως παράμετρο:

<?php func(3, function($num) { return $num ** 2; }); ?>

Επιλογή 4

Μπορούμε να συντομεύσουμε τον κώδικα, χρησιμοποιώντας συνάρτηση βέλους:

<?php func(3, fn($num) => $num ** 2); ?>

Πρακτικές ασκήσεις

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

<?php function func($arr, $calb) { $res = []; foreach ($arr as $elem) { $res[] = $calb($elem); } return $res; } ?>

Καλέστε αυτή τη συνάρτηση, μεταβιβάζοντας ως παράμετρο έναν πίνακα με αριθμούς και μια συνάρτηση επανάκλησης, που υψώνει τον αριθμό που μεταβιβάστηκε στο τετράγωνο.

Ελληνικά
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Χρησιμοποιούμε cookie για τη λειτουργία του ιστότοπου, την ανάλυση και την εξατομίκευση. Η επεξεργασία των δεδομένων γίνεται σύμφωνα με την Πολιτική Απορρήτου.
αποδοχή όλων ρύθμιση απόρριψη