如何在插件中重写Moodle核心函数?

如何在插件中重写Moodle核心函数?,moodle,moodle-api,Moodle,Moodle Api,有没有办法在插件中重写Moodle核心函数 例如,我想覆盖在中调用的函数get\u max\u upload\u size /admin/settings/security.php:30。此函数位于/lib/moodlelib.php:6186 从更一般的角度来说:当您需要在Moodle中执行此类操作时(我不想破解核心文件),有什么好的做法?这取决于您需要的功能。由于上述函数是moodle核心文件的一部分,该文件包含在global config.php=>setup.php中,因此我认为没有直接

有没有办法在插件中重写Moodle核心函数

例如,我想覆盖在中调用的函数
get\u max\u upload\u size
/admin/settings/security.php:30
。此函数位于
/lib/moodlelib.php:6186


从更一般的角度来说:当您需要在Moodle中执行此类操作时(我不想破解核心文件),有什么好的做法?

这取决于您需要的功能。由于上述函数是moodle核心文件的一部分,该文件包含在global config.php=>setup.php中,因此我认为没有直接的方法可以在不触及核心的情况下更改此函数


你这个想法背后的意图是什么?你想开发一个允许上传较大文件的插件吗?如果是这样,您可以尝试在插件使用期间修改ini_get('upload_max_filesize'))/ini_get('post_max_size'))等设置,为了使核心函数返回适当的大小

,我想更改此函数为
/admin/settings.php?section=sitepolicies
中使用的管理部分生成的值。乍一看,我看不到使用插件更改此设置页面行为的可能性。如果你不想触摸核心,你可以考虑编写一个本地插件,这将允许你在那里设置设置。但这不会影响现有的设置页面,因此每次有人保存原始设置表单时,您的值都将被覆盖。或者将整个设置页面克隆到插件中,并禁止使用原始页面,例如使用Web服务器重定向。我尝试在本地插件中重写我要重写的函数,但这会导致一个
致命错误:无法重新声明get_max_upload_size()
。如果不支持重写,我将在这里停止。您可以在命名空间中重写它,如下所述: