2008-10-23 20 views
11

php simple HTML DOM parser numaralı makaleyi kullanarak makalelerin tam sayfadaki her makaleden görüntü, başlık, tarih ve açıklama almak istiyorum. API'ye baktığımda, bir geri arama işlevini ayarlayan bir set_callback'i olduğunu farkettim. Ancak bunun ne olduğundan veya nasıl kullanacağından emin değilim? Örneklerden birinde, bazı şeyleri ortaya çıkaran bir işlevi çağırmak için kullanılır, bunu tüm işlevleri çağırmak için kullanmanız gerekip gerekmediğini merak ediyorum.Geri çağırma işlevi nedir ve OOP ile nasıl kullanabilirim

Bunu neden kullandığımı merak ediyorum ve daha önce hiç geri arama işlevine rastlamadığım için ne yapar? $ değişkeni():

<?php 

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

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

thisFuncTakesACallback('thisFuncGetsCalled'); 
?> 

Böyle bir değişkende saklanan kendi adı olan bir işlev çağırabilirsiniz:

cevap

20

Burada temel bir geri çağırma işlevi örnek.

Yani, yukarıdaki örnekte, biz ismi daha sonra geçirilen işlevini çağırır thisFuncTakesACallback() için fonksiyonunu thisFuncGetsCalled geçmektedir. Veri ne olursa olsun üzerinde

+0

Harika ve basit bir cevap, teşekkürler. Yine de bir sorum var, bu özelliği mevcut olan minimum PHP sürümü nedir? –

+3

Bu cevap güncel değil. Günümüzde PHP, belirli bir işlev türünü ifade etmek için 'geri arama' terimini kullanır. Daha fazla bilgi için PHP'nin konuyla ilgili kendi belgelerini okuyun: http://php.net/manual/en/function.call-user-func.php –

+0

hala php7'de çalışıyor –

3

Bir geri arama işlevi bu işlevi kullanacak belirli bir yöntemle geri döndü.

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

yani işlev "make_bold()" bulunan herhangi veriler üzerinde işletilecek:

Bu özel kütüphane çalışmaları, ancak kadar basit bir şey olabilir emin değilim. Yine, bu özel kitaplığın nasıl çalıştığından emin değilim (yani, geri çağırma işlevinin hangi yöntemlerde çağrılacağını bilmiyorum)

2

Geri arama, bir işlev, nesne örneği 'yöntemi veya bir sınıfta statik yöntemdir. Her iki şekilde de, bu bir fonksiyon işaretçisidir. Bazı dillerde işlevler belirli bir türdür. Böylece bir değişkene bir işlev atayabilirsiniz. Bunlar genellikle işlev yönelimli diller olarak adlandırılır. İyi bir örnek Javascript.

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

is_callable için manuel giriş bakınız:

PHP olarak, bir geri arama herhangi biri olabilir.

Oldukça ayrıntılı bir işlev olan call_user_func ile bir geri çağırma işlemi yapabilirsiniz.

0

Tanımı

bir geri aramalar/çağrılabilir (ya anonim veya adlandırılan fonksiyonu ise) işlevi parametresi olarak bir işleve geçmek basit bir fonksiyonudur fonksiyonu geçirilen sonuç verir hangi.

Örnek

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 

karıştırılmamalıdır etmeyin

olmadığı için çakışan kaçınarak onların parametresinde bir dize olarak geri arama işlevinin adını kabul php bazı varsayılan fonksiyonları vardır sabit isim ve işlev adı arasında. Yani bu tür şeylerle karıştırmayın.

0

PHP 5.3 ile, artık bunu yapabilirsiniz:

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

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

Son olarak, güzel bir şekilde yapmak. Geri aramalar harika olduğundan PHP'a mükemmel bir ek.

+0

'$ callback' işlevi değilse ne olur? ? PHP ölümcül bir hata mı, uyarı mı yoksa hiç bir şey mi atıyor? – Spartacus

İlgili konular