【发布时间】:2012-08-23 08:49:12
【问题描述】:
我制作了一个 CodeIgniter 库,它依赖于现有的某个方法。这种方法曾经是“隐藏的”(没有记录,但似乎有效)。最终 CodeIgniter 使它成为 protected,所以我不能从库中调用它。在 GitHub 的开发版 CodeIgniter 中,我可以使用一个新的公共方法。
在我的库中,我使用is_callable 来检测使用哪种方法,旧方法还是新方法。问题是,在当前稳定版本的 CodeIgniter 中,两者都不存在。因此,库将失败。有没有一种方法可以优雅地出错,或者从我的构造函数中抛出异常?目前,如果这两种方法都不可用,脚本将在尝试调用该方法时崩溃。
我不知道 CodeIgniter 库由于缺少方法而无法正确加载的约定。
编辑:这是我要问的那一行:
$this->func = is_callable(array($this->db, '_compile_select')) ? '_compile_select' : 'get_compiled_select';
如果这些都不存在(_compile_select 或get_compiled_select),那么当库尝试调用$this->func 时会出错。我不知道惯例,我可以从图书馆打电话给show_error 吗?从库的构造函数中抛出错误的正确方法是什么?
【问题讨论】:
-
我认为
try-catch在这种情况下不可行? -
@Matt:我不知道你是否可以从库的构造函数中抛出异常。特别是,如果您要自动加载库。我不知道 CodeIgniter 库由于缺少方法而无法正确加载的约定是什么。
-
您使用的实际代码是什么?当然,你想要发生什么?抛出异常与“优雅地出错”完全不同,它将完全停止脚本。你的意思是在
catch块中做其他事情还是什么?详情? -
@WesleyMurch:我已将代码添加到问题中。我只是想知道我的库是否有办法说“你不能使用这个库,你缺少一个函数”,而不是在尝试使用不存在的函数时崩溃。
标签: php codeigniter exception