Domanda

In che modo le funzioni di callback possono aiutarmi nel mio sviluppo? Soprattutto con PHP. Sono nuovo di php e della programmazione stessa, ma ho visto il potere dei callback nelle librerie js come jquery. Ho lavorato con un callback in php ma mi è stato lasciato fare molte domande al riguardo:

  1. qual è l'ambito di una funzione di callback
  2. quali parametri posso passare a una funzione di callback (implicitamente o esplicitamente)

ecco un codice dalla documentazione di 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');
   }
}

come ha funzionato questo callback? da dove provengono i parametri?

È stato utile?

Soluzione

Non conosco Kohana, ma presumo che ciò implichi che durante la convalida dell'e-mail, chiama _unique_email ().

In PHP i callback possono aiutarti nello sviluppo per offrirti un modo semplice per estendere il tuo codice. Ad esempio:

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

Non conosco Kohana, ma presumo che ciò implichi che durante la convalida dell'e-mail, chiama _unique_email ().

In PHP i callback possono aiutarti nello sviluppo per offrirti un modo semplice per estendere il tuo codice. Ad esempio:

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

Non conosco Kohana, ma presumo che ciò implichi che durante la convalida dell'e-mail, chiama _unique_email ().

In PHP i callback possono aiutarti nello sviluppo per offrirti un modo semplice per estendere il tuo codice. Ad esempio:

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

Non conosco Kohana, ma presumo che ciò implichi che durante la convalida dell'e-mail, chiama _unique_email ().

In PHP i callback possono aiutarti nello sviluppo per offrirti un modo semplice per estendere il tuo codice. Ad esempio:

<*>

Questo pezzo di codice creerebbe un nuovo post sul blog, imposterà i contenuti e lo salverà nel database. Ma supponiamo che tu voglia elaborare BBCode nei contenuti. Come puoi farlo, senza dover andare a modificare la classe Blog_Post? Con un callback.

<*>

Ovviamente, ci sono diversi modi per implementare i callback, ma hai detto di conoscere il potere dei callback in JS, e sono sempre onClick, onLoad, onKeyUp, ecc., quindi ho voluto fare un esempio che somigliasse a quel comportamento.

Spero che questo sia stato di qualche aiuto. Per quanto riguarda le tue domande sui parametri, dipende da cosa viene dato al callback. Nel mio esempio, a qualsiasi funzione che viene attivata onSave verrà assegnato solo il parametro $ contents.

In blog_post, ho una funzione onSave (), che memorizzava la funzione da richiamare, e quindi quando la funzione save () cercava di salvare un post, chiamava tutti i callback che erano stati definiti con onSave (). Spero di essere abbastanza chiaro.

Fondamentalmente, gli argomenti passati ai callback dipendono dalle funzioni che li chiamano. Potrei fare la funzione save () chiamata parseBBCode () con qualsiasi argomento volessi, ma quelli sono decisi dalla funzione che chiama il callback, non dal callback. Il callback non ha alcun controllo su quali argomenti gli vengono passati.

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

Questo pezzo di codice creerebbe un nuovo post sul blog, imposterà i contenuti e lo salverà nel database. Ma supponiamo che tu voglia elaborare BBCode nei contenuti. Come puoi farlo, senza dover andare a modificare la classe Blog_Post? Con un callback.

<*>

Ovviamente, ci sono diversi modi per implementare i callback, ma hai detto di conoscere il potere dei callback in JS, e sono sempre onClick, onLoad, onKeyUp, ecc., quindi ho voluto fare un esempio che somigliasse a quel comportamento.

Spero che questo sia stato di qualche aiuto. Per quanto riguarda le tue domande sui parametri, dipende da cosa viene dato al callback. Nel mio esempio, a qualsiasi funzione che viene attivata onSave verrà assegnato solo il parametro $ contents.

In blog_post, ho una funzione onSave (), che memorizzava la funzione da richiamare, e quindi quando la funzione save () cercava di salvare un post, chiamava tutti i callback che erano stati definiti con onSave (). Spero di essere abbastanza chiaro.

Fondamentalmente, gli argomenti passati ai callback dipendono dalle funzioni che li chiamano. Potrei fare la funzione save () chiamata parseBBCode () con qualsiasi argomento volessi, ma quelli sono decisi dalla funzione che chiama il callback, non dal callback. Il callback non ha alcun controllo su quali argomenti gli vengono passati.

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

Questo pezzo di codice creerebbe un nuovo post sul blog, imposterà i contenuti e lo salverà nel database. Ma supponiamo che tu voglia elaborare BBCode nei contenuti. Come puoi farlo, senza dover andare a modificare la classe Blog_Post? Con un callback.

<*>

Ovviamente, ci sono diversi modi per implementare i callback, ma hai detto di conoscere il potere dei callback in JS, e sono sempre onClick, onLoad, onKeyUp, ecc., quindi ho voluto fare un esempio che somigliasse a quel comportamento.

Spero che questo sia stato di qualche aiuto. Per quanto riguarda le tue domande sui parametri, dipende da cosa viene dato al callback. Nel mio esempio, a qualsiasi funzione che viene attivata onSave verrà assegnato solo il parametro $ contents.

In blog_post, ho una funzione onSave (), che memorizzava la funzione da richiamare, e quindi quando la funzione save () cercava di salvare un post, chiamava tutti i callback che erano stati definiti con onSave (). Spero di essere abbastanza chiaro.

Fondamentalmente, gli argomenti passati ai callback dipendono dalle funzioni che li chiamano. Potrei fare la funzione save () chiamata parseBBCode () con qualsiasi argomento volessi, ma quelli sono decisi dalla funzione che chiama il callback, non dal callback. Il callback non ha alcun controllo su quali argomenti gli vengono passati.

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

Questo pezzo di codice creerebbe un nuovo post sul blog, imposterà i contenuti e lo salverà nel database. Ma supponiamo che tu voglia elaborare BBCode nei contenuti. Come puoi farlo, senza dover andare a modificare la classe Blog_Post? Con un callback.

<*>

Ovviamente, ci sono diversi modi per implementare i callback, ma hai detto di conoscere il potere dei callback in JS, e sono sempre onClick, onLoad, onKeyUp, ecc., quindi ho voluto fare un esempio che somigliasse a quel comportamento.

Spero che questo sia stato di qualche aiuto. Per quanto riguarda le tue domande sui parametri, dipende da cosa viene dato al callback. Nel mio esempio, a qualsiasi funzione che viene attivata onSave verrà assegnato solo il parametro $ contents.

In blog_post, ho una funzione onSave (), che memorizzava la funzione da richiamare, e quindi quando la funzione save () cercava di salvare un post, chiamava tutti i callback che erano stati definiti con onSave (). Spero di essere abbastanza chiaro.

Fondamentalmente, gli argomenti passati ai callback dipendono dalle funzioni che li chiamano. Potrei fare la funzione save () chiamata parseBBCode () con qualsiasi argomento volessi, ma quelli sono decisi dalla funzione che chiama il callback, non dal callback. Il callback non ha alcun controllo su quali argomenti gli vengono passati.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top