Php 如何引用函数?

Php 如何引用函数?,php,hook,mediawiki,Php,Hook,Mediawiki,我正在学习如何在mediawiki中使用。我也是PHP新手。 可以通过将下一行放入LocalSettings.php来添加常规钩子处理程序: $wgHooks['event'][] = 'function'; 假设我在my.php文件中编写了myfunction。如何从LocalSettings.php指向此函数 编辑。我已经在我的.php文件中编写了一些函数。如何引用此函数? 我应该告诉mediawiki在哪里可以找到这个函数。我不知道怎么做。 我应该写“$wgHooks['event'][

我正在学习如何在mediawiki中使用。我也是PHP新手。 可以通过将下一行放入LocalSettings.php来添加常规钩子处理程序:

$wgHooks['event'][] = 'function';
假设我在
my.php
文件中编写了
myfunction
。如何从LocalSettings.php指向此函数

编辑。我已经在我的.php文件中编写了一些函数。如何引用此函数? 我应该告诉mediawiki在哪里可以找到这个函数。我不知道怎么做。
我应该写
“$wgHooks['event'][]='my.php:function'
。或者我应该
my.php文件包含到LocalSetting中,然后只写
'$wgHooks['event'][='function'

我不确定我是否完全理解您想要什么,但是如果您想调用一个用户定义的函数,可以使用以函数名称为参数的函数。您必须修改该文件,以便该函数可用

call_user_func('myfunction ', array());

我不确定我完全理解您想要的是什么,但是如果您想要调用一个用户定义的函数,您可以使用以函数名为参数的函数。您必须修改该文件,以便该函数可用

call_user_func('myfunction ', array());

根据我从mediawiki文档中读到的内容,您需要创建一个扩展,并在扩展中安装钩子。在my.php中,您将编写:

 // $wgHooks is a global variable
 $wgHooks['event'][] = 'function';
希望我理解正确 扩展文档

根据我从mediawiki文档中读到的内容,您需要创建一个扩展,并在扩展中安装钩子。在my.php中,您将编写:

 // $wgHooks is a global variable
 $wgHooks['event'][] = 'function';
希望我理解正确 扩展文档

正如前面所说,您需要将带有函数名的字符串(或字符串数组等)推送到hook数组中

AFAIK,当触发钩子时,它们将被调用。因此,它将取决于my.php文件中的函数声明。使用
myfunction
,它应该是

$wgHooks['event'][] = 'myfunction';
正如前面所说,您需要将带有函数名的字符串(或字符串数组等)推送到hook数组中

AFAIK,当触发钩子时,它们将被调用。因此,它将取决于my.php文件中的函数声明。使用
myfunction
,它应该是

$wgHooks['event'][] = 'myfunction';

您在PHP中通过引用函数。回调是其中之一:

  • 函数名:
    'myFunc'
  • 包含类名和函数名的数组:
    array('MyClass','myFunc')
  • 包含对象和函数名的数组:
    array($myObj,'myFunc')
  • 匿名函数(从技术上讲,它是一个对象):
    函数($x,$y){/*PHP-code*/}
    (这只是PHP5.3+,但最新版本的MediaWiki也是如此)
  • 通过
    call\u user\u func($callback,$arg1,$arg2)
    调用这些回调分别相当于以下内容:

  • myFunc($arg1,$arg2)
  • MyClass::myFunc($arg1,$arg2)
  • $myObj->myFunc($arg1,$arg2)
  • 执行匿名函数体,将
    $x
    $y
    替换为
    $arg1
    $arg2
  • 如果此代码失败(例如,您使用的是第一个版本,并且未加载函数
    myFunc
    ),则回调也将失败。您可以在MediaWiki中与第二个表单一起使用,该表单通常通过以下方式完成:


    通过这种方式,您可以从
    LocalSettings.php
    加载
    MyExtension.php
    (这是一个仅包含配置设置的小文件),并且
    MyExtension.body.php
    (包含所有代码)仅在实际使用扩展名的请求中加载。

    您在php中通过调用函数。回调是其中之一:

  • 函数名:
    'myFunc'
  • 包含类名和函数名的数组:
    array('MyClass','myFunc')
  • 包含对象和函数名的数组:
    array($myObj,'myFunc')
  • 匿名函数(从技术上讲,它是一个对象):
    函数($x,$y){/*PHP-code*/}
    (这只是PHP5.3+,但最新版本的MediaWiki也是如此)
  • 通过
    call\u user\u func($callback,$arg1,$arg2)
    调用这些回调分别相当于以下内容:

  • myFunc($arg1,$arg2)
  • MyClass::myFunc($arg1,$arg2)
  • $myObj->myFunc($arg1,$arg2)
  • 执行匿名函数体,将
    $x
    $y
    替换为
    $arg1
    $arg2
  • 如果此代码失败(例如,您使用的是第一个版本,并且未加载函数
    myFunc
    ),则回调也将失败。您可以在MediaWiki中与第二个表单一起使用,该表单通常通过以下方式完成:


    这样,您就可以从
    LocalSettings.php
    MyExtension.body.php
    (包含所有代码)加载
    MyExtension.php
    (这是一个只有配置设置的小文件)仅在实际使用扩展名的请求中加载。

    我是否应该将
    my.php文件包含到LocalSettings.php?是的,请参阅。我是否应该将
    my.php文件包含到LocalSettings.php?是的,请参阅。但我不想创建扩展名。我只想在某个事件(hook)上运行函数。您需要在mediawiki中包含my.php,以便能够安装事件处理程序。简单的方法是创建一个基本扩展。“难”的方法(实际上不是那么难,但不好的做法)是修改mediawiki源代码,但这就是扩展的目的:能够在不修改核心的情况下包含自己的源代码。但我不想创建扩展。我只想在某个事件(hook)上运行函数。您需要在mediawiki中包含my.php,以便能够安装事件处理程序。简单的方法是创建一个基本扩展。“困难”的方法(实际上不是那么困难,但不好的做法)是修改mediawiki源代码,但这就是扩展的目的:能够包含您自己的源代码