2008-10-23 3 views
11

Je veux utiliser le php simple HTML DOM parser pour récupérer l'image, le titre, la date et la description de chaque article sur une page remplie d'articles. Lorsque je regarde l'API, je remarque qu'il a un set_callback qui définit une fonction de rappel. Cependant, je ne suis pas sûr de ce que cela fait ou comment je l'utiliser? Dans l'un des exemples, il est utilisé pour appeler une fonction qui supprime certaines choses, je me demande si vous devez utiliser cela pour appeler toutes les fonctions?Qu'est-ce qu'une fonction de rappel et comment l'utiliser avec POO

Je suppose que je me demande pourquoi je l'utilise, et que fait-il car je n'ai jamais rencontré une fonction de rappel avant!

Répondre

20

Voici un exemple de fonction de rappel de base:

<?php 

function thisFuncTakesACallback($callbackFunc) 
{ 
    echo "I'm going to call $callbackFunc!<br />"; 
    $callbackFunc(); 
} 

function thisFuncGetsCalled() 
{ 
    echo "I'm a callback function!<br />"; 
} 

thisFuncTakesACallback('thisFuncGetsCalled'); 
?> 

Vous pouvez appeler une fonction qui a son nom enregistré dans une variable comme ceci: variable $().

Ainsi, dans l'exemple ci-dessus, nous passons le nom du thisFuncGetsCalled fonction à thisFuncTakesACallback() qui appelle ensuite la fonction transmise.

+0

Grande et simple réponse, merci. J'ai une question cependant, quelle est la version minimale requise de PHP qui a cette fonctionnalité disponible? –

+3

Cette réponse est périmée. Aujourd'hui, PHP utilise le terme «callback» pour désigner un type spécifique de fonction. Pour plus d'informations, lisez la documentation de PHP sur ce sujet: http://php.net/manual/fr/function.call-user-func.php –

+0

cela fonctionne toujours dans php7 –

3

Une fonction de rappel utilisera cette fonction sur toutes les données est retourné par une méthode particulière.

Je ne suis pas sûr de savoir comment fonctionne cette bibliothèque particulière, mais il pourrait être quelque chose d'aussi simple que:

$html = file_get_html('http://example.com'); 
$html->set_callback('make_bold'); 
$html->find('#title'); // returns an array 

function make_bold($results) { 
// make the first result bold 
    return '<b>'.$results[0].'</b>'; 
} 

-à-dire, la fonction « make_bold() » sera exécuté sur les données trouvées. Encore une fois, je ne suis pas sûr comment cette bibliothèque particulière fonctionne (c.-à-d., Quelles méthodes seront appelées la fonction de rappel)

2

Un rappel est une fonction, une méthode d'instance d'objet ou une méthode statique sur une classe. De toute façon, c'est une sorte de pointeur de fonction. Dans certaines langues, les fonctions sont un type spécifique. Vous pouvez donc affecter une fonction à une variable. Ceux-ci sont généralement appelés langages orientés fonction. Un bon exemple est Javascript.

En PHP, un rappel peut être l'une:

$fn = 'foo'; // => foo() 
$fn = array($obj, 'foo'); // => $obj->foo() 
$fn = array('Foo', 'bar'); // => Foo::bar() 

Voir la saisie manuelle pour is_callable.

Vous pouvez appeler un rappel avec la fonction plutôt verbeuse call_user_func.

0

Defination

A callbacks/appelable est une fonction simple (soit il est fonction anonyme ou le nom) que nous passons à une autre fonction en tant que paramètre de fonction qui, dans les déclarations de résultats qui ont passé la fonction.

Exemple

function iWillReturnCallback($callBackHere){ 
    return $callBackHere; 
} 

function iAmCallBack(){ 
    echo "I am returned with the help of another function"; 
} 

iWillReturnCallback(iAmCallBack()); 

//--Output -> I am returned with the help of another function 

Ne pas confondre

Il y a quelques fonctions par défaut en php qui accepte le nom de la fonction de rappel comme une chaîne dans leur paramètre en raison d'éviter contradictoires entre le nom de la constante et le nom de la fonction. Alors ne soyez pas confus dans ce genre de choses.

0

Avec PHP 5.3, vous pouvez le faire:

function doIt($callback) { $callback(); } 

doIt(function() { 
    // this will be done 
}); 

Enfin, une belle façon de le faire. Un excellent ajout à PHP, car les rappels sont géniaux.

+0

Que se passe-t-il si '$ callback' n'est pas une fonction ? Est-ce que PHP lance une erreur fatale, un avertissement ou rien? – Spartacus

Questions connexes