PHP'nin call_user_func()
ASP.NET uygulaması için eşdeğer bir işlevi olup olmadığını merak ediyorum. Ben profesyonelce yapılmış bir CMS alarak ve bu diğer dilde yeniden deneyerek, kendimi dil öğretim aracı olarak ASP.NET için bir PHP uygulama bir dönüşüm yapmak için arıyorum.
Benim PHP CMS mevcut yapısı bir eklenti mimarisi içerir ve CMS belirli parçaları eklentileri için kendilerini teşhir, ve daha sonra bir dizi olarak geri döndü bilgilerini ele çünkü buna benzer bir işlev gerekir nedenidir. Bu hemen hemen Drupal kullandığı aynı sistem.
Ben bu konuda yanlış yolda belki mıyım?
Ben açıklama için ben bu benim şimdiki sistemde nasıl çalıştığını bir örnek vermek gerektiğini düşünüyorum:
<?php
class Test {
function TestMessage() {
// set up array
$arrTest = array("Hello", "World");
// get extra values from all available plugins
$arrExtras = CMS::InvokeHook("HelloTest");
// now contains Hello, World, Foo, Bar
$arrTests = array_merge($arrTest, $arrExtras);
}
}
class CMS {
InvokeHook($function) {
// now contains a couple plugins
$plugins = CMS::GetPlugins();
// empty array of values
$values = array();
foreach($plugins as $plugin) {
// if this plugin has the called method...
if(method_exists($plugin, $function)) {
// call the function and merge in the results
$values[] = call_user_func(array($plugin, $function));
}
}
// return results as an array
return $values;
}
}
class FooTest {
function HelloTest() {
return "Foo";
}
}
class BarTest {
function HelloTest() {
return "Bar";
}
}
?>
Bu bellekten yazıyorum InvokeHook () çağrısı basitleştirilmiş, ama bunun özü şudur: NOT.