Question

Comment les fonctions de rappel peuvent-elles m'aider dans mon développement? Surtout avec PHP. Je suis novice en php et en programmation, mais j’ai vu le pouvoir des callbacks dans des bibliothèques js comme jquery. J'ai travaillé avec un callback en php mais je me suis retrouvé à poser beaucoup de questions à ce sujet:

  1. quelle est la portée d'une fonction de rappel
  2. quels paramètres puis-je passer à une fonction de rappel (implicitement ou explicitement)

voici un code de la documentation Kohana:

$post->add_callbacks('email', array($this, '_unique_email'));

// Define the callback method
/*
 * Callback method that checks for uniqueness of email
 *
 * @param  Validation  $array   Validation object
 * @param  string      $field   name of field being validated
 */
public function _unique_email(Validation $array, $field)
{
   // check the database for existing records
   $email_exists = (bool) ORM::factory('user')->where('email', $array[$field])->count_all();

   if ($email_exists)
   {
       // add error to validation object
       $array->add_error($field, 'email_exists');
   }
}

comment ce rappel a-t-il fonctionné? d'où viennent les paramètres?

Était-ce utile?

La solution

Je ne connais pas Kohana, mais je suppose que cela implique que lors de la validation de l'e-mail, il appelle _unique_email ().

En PHP, les rappels peuvent vous aider avec le développement pour vous fournir un moyen facile d’étendre votre code. Par exemple:

$post = new Blog_Post();
$post->contents = 

Je ne connais pas Kohana, mais je suppose que cela implique que lors de la validation de l'e-mail, il appelle _unique_email ().

En PHP, les rappels peuvent vous aider avec le développement pour vous fournir un moyen facile d’étendre votre code. Par exemple:

$post = new Blog_Post();
$post->onSave('parseBBCode');
$post->contents = 

Je ne connais pas Kohana, mais je suppose que cela implique que lors de la validation de l'e-mail, il appelle _unique_email ().

En PHP, les rappels peuvent vous aider avec le développement pour vous fournir un moyen facile d’étendre votre code. Par exemple:

$post = new Blog_Post();
$post->contents = 

Je ne connais pas Kohana, mais je suppose que cela implique que lors de la validation de l'e-mail, il appelle _unique_email ().

En PHP, les rappels peuvent vous aider avec le développement pour vous fournir un moyen facile d’étendre votre code. Par exemple:

<*>

Ce morceau de code créerait un nouvel article de blog, en définirait le contenu et l'enregistrerait dans la base de données. Mais, disons que vous voulez traiter le BBCode dans le contenu. Comment pouvez-vous le faire sans avoir à éditer la classe Blog_Post? Avec un rappel.

<*>

Évidemment, il existe différentes manières de mettre en œuvre des rappels, mais vous avez dit connaître le pouvoir des rappels dans JS. Ils sont toujours onClick, onLoad, onKeyUp, etc., alors je voulais donner un exemple qui ressemblait un peu à ce comportement.

J'espère que cela vous a aidé. En ce qui concerne vos questions sur les paramètres, cela dépend de ce qui est donné au rappel. Dans mon exemple, toute fonction déclenchée sur OnSave n'aura que le paramètre $ contents.

Dans blog_post, j'ai une fonction onSave (), qui stocke la fonction à rappeler, puis lorsque la fonction save () tente de sauvegarder une publication, elle appelle tous les rappels définis avec onSave. () J'espère que je suis assez clair.

Fondamentalement, les arguments qui sont transmis aux rappels dépendent des fonctions qui les appellent. Je pourrais faire en sorte que la fonction save () appelle parseBBCode () avec tous les arguments que je voulais, mais ceux-ci sont déterminés par la fonction qui appelle le rappel, pas par le rappel. Le rappel n'a aucun contrôle sur les arguments qui lui sont transmis.

POST['contents']; $post->save();

Ce morceau de code créerait un nouvel article de blog, en définirait le contenu et l'enregistrerait dans la base de données. Mais, disons que vous voulez traiter le BBCode dans le contenu. Comment pouvez-vous le faire sans avoir à éditer la classe Blog_Post? Avec un rappel.

<*>

Évidemment, il existe différentes manières de mettre en œuvre des rappels, mais vous avez dit connaître le pouvoir des rappels dans JS. Ils sont toujours onClick, onLoad, onKeyUp, etc., alors je voulais donner un exemple qui ressemblait un peu à ce comportement.

J'espère que cela vous a aidé. En ce qui concerne vos questions sur les paramètres, cela dépend de ce qui est donné au rappel. Dans mon exemple, toute fonction déclenchée sur OnSave n'aura que le paramètre $ contents.

Dans blog_post, j'ai une fonction onSave (), qui stocke la fonction à rappeler, puis lorsque la fonction save () tente de sauvegarder une publication, elle appelle tous les rappels définis avec onSave. () J'espère que je suis assez clair.

Fondamentalement, les arguments qui sont transmis aux rappels dépendent des fonctions qui les appellent. Je pourrais faire en sorte que la fonction save () appelle parseBBCode () avec tous les arguments que je voulais, mais ceux-ci sont déterminés par la fonction qui appelle le rappel, pas par le rappel. Le rappel n'a aucun contrôle sur les arguments qui lui sont transmis.

POST['contents']; $post->save(); # Will call parseBBCode when saving the blog post. function parseBBCode($contents) { # Parse BBCode and return the parsed contents. }

Ce morceau de code créerait un nouvel article de blog, en définirait le contenu et l'enregistrerait dans la base de données. Mais, disons que vous voulez traiter le BBCode dans le contenu. Comment pouvez-vous le faire sans avoir à éditer la classe Blog_Post? Avec un rappel.

<*>

Évidemment, il existe différentes manières de mettre en œuvre des rappels, mais vous avez dit connaître le pouvoir des rappels dans JS. Ils sont toujours onClick, onLoad, onKeyUp, etc., alors je voulais donner un exemple qui ressemblait un peu à ce comportement.

J'espère que cela vous a aidé. En ce qui concerne vos questions sur les paramètres, cela dépend de ce qui est donné au rappel. Dans mon exemple, toute fonction déclenchée sur OnSave n'aura que le paramètre $ contents.

Dans blog_post, j'ai une fonction onSave (), qui stocke la fonction à rappeler, puis lorsque la fonction save () tente de sauvegarder une publication, elle appelle tous les rappels définis avec onSave. () J'espère que je suis assez clair.

Fondamentalement, les arguments qui sont transmis aux rappels dépendent des fonctions qui les appellent. Je pourrais faire en sorte que la fonction save () appelle parseBBCode () avec tous les arguments que je voulais, mais ceux-ci sont déterminés par la fonction qui appelle le rappel, pas par le rappel. Le rappel n'a aucun contrôle sur les arguments qui lui sont transmis.

POST['contents']; $post->save();

Ce morceau de code créerait un nouvel article de blog, en définirait le contenu et l'enregistrerait dans la base de données. Mais, disons que vous voulez traiter le BBCode dans le contenu. Comment pouvez-vous le faire sans avoir à éditer la classe Blog_Post? Avec un rappel.

<*>

Évidemment, il existe différentes manières de mettre en œuvre des rappels, mais vous avez dit connaître le pouvoir des rappels dans JS. Ils sont toujours onClick, onLoad, onKeyUp, etc., alors je voulais donner un exemple qui ressemblait un peu à ce comportement.

J'espère que cela vous a aidé. En ce qui concerne vos questions sur les paramètres, cela dépend de ce qui est donné au rappel. Dans mon exemple, toute fonction déclenchée sur OnSave n'aura que le paramètre $ contents.

Dans blog_post, j'ai une fonction onSave (), qui stocke la fonction à rappeler, puis lorsque la fonction save () tente de sauvegarder une publication, elle appelle tous les rappels définis avec onSave. () J'espère que je suis assez clair.

Fondamentalement, les arguments qui sont transmis aux rappels dépendent des fonctions qui les appellent. Je pourrais faire en sorte que la fonction save () appelle parseBBCode () avec tous les arguments que je voulais, mais ceux-ci sont déterminés par la fonction qui appelle le rappel, pas par le rappel. Le rappel n'a aucun contrôle sur les arguments qui lui sont transmis.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top