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
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
Nasıl sadece sayısal (0-9) HTML ınputb...
Tek örnek bir uygulama oluşturmak için...
Nasıl Express/Node.js içinde bir İSTAS...
Ne kadar BOŞ izin vermek için bir MySQ...
Entegre bir WordPress kullanmak için d...