PHP异常:未找到context_block类——命名空间问题咨询
解决
context_block类找不到的问题 核心原因
当前代码处于MRBS\Session命名空间下,PHP会默认在该命名空间内查找context_block类,但Moodle的context_block属于全局命名空间(或Moodle自身核心命名空间),因此出现类找不到的错误。
具体解决办法
- 直接指定全局命名空间前缀
在context_block类名前添加\,强制PHP到全局空间查找该类:
if (has_capability('moodle/block:edit', \context_block::instance($blockid))) { // 你的权限判断逻辑代码 }
- 使用命名空间引入(针对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
相关产品推荐
相关产品推荐

