Pregunta

¿Cómo pueden ayudarme las funciones de devolución de llamada en mi desarrollo? Especialmente con PHP. Soy nuevo en php y en la programación en sí, pero vi el poder de las devoluciones de llamada en bibliotecas js como jquery. He trabajado con una devolución de llamada en php pero me quedé haciendo muchas preguntas al respecto:

  1. cuál es el alcance de una función de devolución de llamada
  2. qué parámetros puedo pasar a una función de devolución de llamada (ya sea implícita o explícitamente)

aquí hay un código de la documentación de 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');
   }
}

¿Cómo funcionó esta devolución de llamada? ¿De dónde vienen los parámetros?

¿Fue útil?

Solución

No conozco Kohana, pero supongo que eso implica que cuando se valida el correo electrónico, se llama _unique_email ().

En PHP, las devoluciones de llamada pueden ayudarlo con el desarrollo para proporcionarle una manera fácil de extender su código. Por ejemplo:

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

No conozco Kohana, pero supongo que eso implica que cuando se valida el correo electrónico, se llama _unique_email ().

En PHP, las devoluciones de llamada pueden ayudarlo con el desarrollo para proporcionarle una manera fácil de extender su código. Por ejemplo:

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

No conozco Kohana, pero supongo que eso implica que cuando se valida el correo electrónico, se llama _unique_email ().

En PHP, las devoluciones de llamada pueden ayudarlo con el desarrollo para proporcionarle una manera fácil de extender su código. Por ejemplo:

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

No conozco Kohana, pero supongo que eso implica que cuando se valida el correo electrónico, se llama _unique_email ().

En PHP, las devoluciones de llamada pueden ayudarlo con el desarrollo para proporcionarle una manera fácil de extender su código. Por ejemplo:

<*>

Este código crearía una nueva publicación de blog, establecería el contenido y lo guardaría en la base de datos. Pero, digamos que desea procesar BBCode en los contenidos. ¿Cómo puedes hacerlo sin tener que ir a editar la clase Blog_Post? Con una devolución de llamada.

<*>

Obviamente, hay diferentes formas de implementar devoluciones de llamada, pero usted dijo que conocía el poder de las devoluciones de llamada en JS, y que siempre están en Click, onLoad, onKeyUp, etc., así que quería dar un ejemplo que se pareciera un poco a ese comportamiento.

Espero que esto haya sido de alguna ayuda. Con respecto a sus preguntas sobre los parámetros, depende de lo que se le dé a la devolución de llamada. En mi ejemplo, a cualquier función que se active onSave solo se le asignará el parámetro $ contents.

En blog_post, tengo una función onSave (), que almacenaría la función a la que se volverá a llamar, y luego, cuando la función save () intentara guardar una publicación, llamaría a cualquier devolución de llamada que se haya definido con onSave (). Espero ser lo suficientemente claro.

Básicamente, los argumentos que se pasan a las devoluciones de llamada dependen de las funciones que los llaman. Podría hacer que la función save () llame a parseBBCode () con los argumentos que quisiera, pero esos son decididos por la función que llama a la devolución de llamada, no por la devolución de llamada. La devolución de llamada no tiene control sobre los argumentos que se le pasan.

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

Este código crearía una nueva publicación de blog, establecería el contenido y lo guardaría en la base de datos. Pero, digamos que desea procesar BBCode en los contenidos. ¿Cómo puedes hacerlo sin tener que ir a editar la clase Blog_Post? Con una devolución de llamada.

<*>

Obviamente, hay diferentes formas de implementar devoluciones de llamada, pero usted dijo que conocía el poder de las devoluciones de llamada en JS, y que siempre están en Click, onLoad, onKeyUp, etc., así que quería dar un ejemplo que se pareciera un poco a ese comportamiento.

Espero que esto haya sido de alguna ayuda. Con respecto a sus preguntas sobre los parámetros, depende de lo que se le dé a la devolución de llamada. En mi ejemplo, a cualquier función que se active onSave solo se le asignará el parámetro $ contents.

En blog_post, tengo una función onSave (), que almacenaría la función a la que se volverá a llamar, y luego, cuando la función save () intentara guardar una publicación, llamaría a cualquier devolución de llamada que se haya definido con onSave (). Espero ser lo suficientemente claro.

Básicamente, los argumentos que se pasan a las devoluciones de llamada dependen de las funciones que los llaman. Podría hacer que la función save () llame a parseBBCode () con los argumentos que quisiera, pero esos son decididos por la función que llama a la devolución de llamada, no por la devolución de llamada. La devolución de llamada no tiene control sobre los argumentos que se le pasan.

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

Este código crearía una nueva publicación de blog, establecería el contenido y lo guardaría en la base de datos. Pero, digamos que desea procesar BBCode en los contenidos. ¿Cómo puedes hacerlo sin tener que ir a editar la clase Blog_Post? Con una devolución de llamada.

<*>

Obviamente, hay diferentes formas de implementar devoluciones de llamada, pero usted dijo que conocía el poder de las devoluciones de llamada en JS, y que siempre están en Click, onLoad, onKeyUp, etc., así que quería dar un ejemplo que se pareciera un poco a ese comportamiento.

Espero que esto haya sido de alguna ayuda. Con respecto a sus preguntas sobre los parámetros, depende de lo que se le dé a la devolución de llamada. En mi ejemplo, a cualquier función que se active onSave solo se le asignará el parámetro $ contents.

En blog_post, tengo una función onSave (), que almacenaría la función a la que se volverá a llamar, y luego, cuando la función save () intentara guardar una publicación, llamaría a cualquier devolución de llamada que se haya definido con onSave (). Espero ser lo suficientemente claro.

Básicamente, los argumentos que se pasan a las devoluciones de llamada dependen de las funciones que los llaman. Podría hacer que la función save () llame a parseBBCode () con los argumentos que quisiera, pero esos son decididos por la función que llama a la devolución de llamada, no por la devolución de llamada. La devolución de llamada no tiene control sobre los argumentos que se le pasan.

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

Este código crearía una nueva publicación de blog, establecería el contenido y lo guardaría en la base de datos. Pero, digamos que desea procesar BBCode en los contenidos. ¿Cómo puedes hacerlo sin tener que ir a editar la clase Blog_Post? Con una devolución de llamada.

<*>

Obviamente, hay diferentes formas de implementar devoluciones de llamada, pero usted dijo que conocía el poder de las devoluciones de llamada en JS, y que siempre están en Click, onLoad, onKeyUp, etc., así que quería dar un ejemplo que se pareciera un poco a ese comportamiento.

Espero que esto haya sido de alguna ayuda. Con respecto a sus preguntas sobre los parámetros, depende de lo que se le dé a la devolución de llamada. En mi ejemplo, a cualquier función que se active onSave solo se le asignará el parámetro $ contents.

En blog_post, tengo una función onSave (), que almacenaría la función a la que se volverá a llamar, y luego, cuando la función save () intentara guardar una publicación, llamaría a cualquier devolución de llamada que se haya definido con onSave (). Espero ser lo suficientemente claro.

Básicamente, los argumentos que se pasan a las devoluciones de llamada dependen de las funciones que los llaman. Podría hacer que la función save () llame a parseBBCode () con los argumentos que quisiera, pero esos son decididos por la función que llama a la devolución de llamada, no por la devolución de llamada. La devolución de llamada no tiene control sobre los argumentos que se le pasan.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top