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

  • discokatze

    discokatze

    23 EYLÜL 2009
  • ELPRESADOR

    ELPRESADOR

    21 HAZİRAN 2008
  • Qmusic Romania

    Qmusic Roman

    8 Temmuz 2011