SORU
1 AĞUSTOS 2008, Cuma


En iyi yolu bir PHP uygulama için eklentileri izin vermek için

PHP yeni bir uygulama, ve insanlar bir eklenti arabirimi kullanarak uzatabilirsiniz bir şey yaratmak istiyorum bu sefer başlıyorum. Nasıl bir yazı hakkında 'kanca' eklentileri belirli olaylara ekleyebileceğini? kodlarını verir

CEVAP
1 AĞUSTOS 2008, Cuma


Gözlemci desen kullanabilirsiniz. Basit işlevsel bir şekilde bunu yapmak için:

<?php

/** Plugin system **/

$listeners = array();

/* Create an entry point for plugins */
function hook(){
global $listeners;

$num_args = func_num_args();
$args = func_get_args();

if($num_args < 2)
trigger_error("Insufficient arguments", E_USER_ERROR);

// Hook name should always be first argument
$hook_name = array_shift($args);

if(!isset($listeners[$hook_name]))
return; // No plugins have registered this hook

foreach($listeners[$hook_name] as $func){
$args = $func($args);
}

return $args;
}

/* Attach a function to a hook */
function add_listener($hook, $function_name){
global $listeners;

$listeners[$hook][] = $function_name;
}


/////////////////////////

/** Sample Plugin **/
add_listener('a_b', 'my_plugin_func1');
add_listener('str', 'my_plugin_func2');

function my_plugin_func1($args){
return array(4, 5);
}
function my_plugin_func2($args){
return str_replace('sample', 'CRAZY', $args[0]);
}

/////////////////////////

/** Sample Application **/

$a = 1;
$b = 2;

list($a, $b) = hook('a_b', $a, $b);

$str = "This is my sample application\n";
$str .= "$a $b = ".($a $b)."\n";
$str .= "$a * $b = ".($a*$b)."\n";

$str = hook('str', $str);

echo $str;

?>

Çıkış:

This is my CRAZY application
4 5 = 9
4 * 5 = 20

Notlar:

Bu örnek için kaynak kodu, uzatılabilir olmak istediğiniz asıl kaynak kodu önce tüm eklentileri bildirmeniz gerekir. Tek veya birden çok değer plugin geçirilen işlemek için nasıl bir örnek ekledim. En zor kısmı her kanca için geçmiş olsun ne listeleyen gerçek belgelere yazıyor.

Bu PHP bir eklenti sistemi tamamlamak için sadece bir yöntemdir. Daha fazla bilgi için WordPress Belgeleri kontrol öneririm daha iyi alternatifler vardır.

Üzgünüm, çizgi karakterler fiyat indirimi ile HTML varlıklar tarafından değiştirilir görünür? Ben yeniden sonrası bu hata düzeltildi geldiğinde bu kod.

Düzenleme: Nevermind, düzenlerken sadece bu şekilde görünüyor

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • alexis gillis

    alexis gilli

    23 HAZİRAN 2011
  • Angry Paintballer

    Angry Paintb

    8 Ocak 2012
  • AyfionGaming

    AyfionGaming

    20 ŞUBAT 2013