【发布时间】:2010-09-28 15:19:30
【问题描述】:
我想知道在 ASP.NET 应用程序中是否有与 PHP 的 call_user_func() 等效的函数。我正在寻找从 PHP 应用程序到 ASP.NET 的转换,作为一种自学语言的方法,方法是使用我专业构建的 CMS 并尝试用其他语言重新创建它。
我需要一个与此类似的函数的原因是因为我的 PHP CMS 的当前结构涉及插件架构,并且 CMS 的特定部分为插件公开自己,然后它将返回的信息作为数组处理。这与 Drupal 使用的系统几乎相同。
我是不是走错了路?
我想为澄清起见,我应该提供一个示例,说明这在我当前的系统中是如何工作的:
<?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";
}
}
?>
注意:InvokeHook() 调用已被简化,因为我是从内存中编写的,但这就是它的要点。
【问题讨论】:
-
您能向我们 ASP.NET 开发人员解释一下这个函数的作用吗?
-
这会从给定名称中调用方法作为字符串。如果传入一个数组,第一个字符串是类,第二个是函数名。您还可以传入函数可以使用的任意数量的参数(我实际的 InvokeHook 方法使用这个)
标签: php asp.net web-applications