You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP异常:未找到context_block类——命名空间问题咨询

解决context_block类找不到的问题

核心原因

当前代码处于MRBS\Session命名空间下,PHP会默认在该命名空间内查找context_block类,但Moodle的context_block属于全局命名空间(或Moodle自身核心命名空间),因此出现类找不到的错误。

具体解决办法

  1. 直接指定全局命名空间前缀
    在context_block类名前添加\,强制PHP到全局空间查找该类:
if (has_capability('moodle/block:edit', \context_block::instance($blockid))) {
    // 你的权限判断逻辑代码
}
  1. 使用命名空间引入(针对Moodle 3.0+版本)
    如果你的Moodle版本采用了命名空间规范,可先引入context_block的完整命名空间,再直接使用类名:
use core\context\context_block;

// 后续正常调用
if (has_capability('moodle/block:edit', context_block::instance($blockid))) {
    // 你的权限判断逻辑代码
}

补充说明

既然require_login()、has_capability等Moodle基础函数能正常使用,说明Moodle核心文件已正确加载,只需解决命名空间的类解析问题即可。

内容的提问来源于stack exchange,提问作者marcocassisa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 05:32:01