Pratik arama işlevleri

1 Cevap php

Nasıl arama işlevleri benim gelişiminde bana yardımcı olabilir? Özellikle PHP ile. Ben php ve kendisini programlama yeni duyuyorum ama jquery gibi js kütüphanelerinde geriçağırımlarının gücünü gördüm. Ben php bir geri arama ile çalıştım, ancak ben bu konuda bir çok soru soran bırakıldı:

  1. Bir geri çağırma işlevinin kapsamı nedir
  2. Ben bir geri çağırma işlevine geçebilir hangi parametreler (açık ya da örtülü)

Burada Kohana belgelerine bir koddur:

$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');
   }
}

Bu geri çağırma nasıl çalıştınız? parametreleri nereden geldi?

1 Cevap

Ben Kohana bilmiyorum, ama ben bu e-posta doğrulama zaman, o) (_unique_email çağırır ima varsayalım.

PHP geri çağrıları kodunuzu uzatmak için kolay bir yol sağlamak için geliştirme konusunda size yardımcı olabilir. Örneğin:

$post = new Blog_Post();
$post->contents = $_POST['contents'];
$post->save();

Bu kod parçası, yeni bir blog yazısı oluşturmak içeriğini ayarlamak ve veritabanına kaydetmek istiyorum. Ama, siz içeriği BBCode işlemek istiyorum diyelim. Eğer Blog_Post sınıfını düzenlemek gitmek zorunda kalmadan, bunu nasıl yapabilirim? Bir geri arama.

$post = new Blog_Post();
$post->onSave('parseBBCode');
$post->contents = $_POST['contents'];
$post->save(); # Will call parseBBCode when saving the blog post.

function parseBBCode($contents) {
  # Parse BBCode and return the parsed contents.
}

Açıkçası, geri çağrıları uygulama farklı yolları vardır, ama sen JS geriçağırımlarının gücünü biliyordu ve onlar her zaman vb onClick, onLoad, onKeyUp vardır dedi, ben biraz bu davranışı andıran bir örnek vermek istedim.

Bu herhangi bir yardım olduğunu umuyoruz. Parametreleri hakkında ilgili sorularınızı, bu geri arama verilir bağlıdır. Benim örnekte, Kaydedildiğinde tetiklenir herhangi bir fonksiyon, sadece $ içeriğini parametre verilecektir.

Gelen Blog_Post, geri çağrılacak fonksiyon kaydetmek istiyorum, ve sonra (save) işlevi bir yazı kaydetmek çalışıyordu, o) (OnSave ile tanımlanmış olan herhangi bir geri çağırır olacak bir Kaydedildiğinde () fonksiyonu var. Ben yeterince açık oluyorum umuyoruz.

Temelde, geri aramalar geçirilen argümanlar onları aramak işlevleri bağlıdır. Ben ne istediğini argümanlar ile Kaydet () işlev çağrısı parseBBCode () yapabilir, ama bu değil geri çağrısı tarafından, geri arama çağıran işlevi tarafından karar verilir. Arama argümanlar kendisine iletilen ne üzerinde hiçbir kontrole sahip.