如何在codeIgniter中修复此错误?

时间:2012-10-13 14:17:22

标签: php smarty codeigniter-2

我正在将codeIgniter与smarty集成,因为我得到了这个 致命错误:无法访问第83行CI_Output::$final_output中的受保护资产/CodeIgniter_2.1.0/application/libraries/smarty_parser.php

我在google&然后发现它是   protected $final_output; // in CodeIgniter_2.1.0/system/core/Output.php line no. 37

当我改为:   public $final_output; // working fine

我担心的是更改CodeIgniter核心文件是否合适?或者它将来会导致错误吗?

2 个答案:

答案 0 :(得分:2)

Code Igniter,与其他框架和库一样,不应该手动更改,因为你失去了对系统进行更新的可能性(如果更新系统,public $ final_output;将更改为private $ final_output;你需要再做一次改变。)

在这种情况下只需要进行一次更改,但是如果您更改了几行,您是否还记得要再次进行的所有更改?

我的推荐,在Code Igniter错误跟踪器https://github.com/EllisLab/CodeIgniter/issues中打开一个问题,评论您的情况并寻求帮助。尽管如此,您还是需要进行更改,编写包含更改的补丁文件,并将其放在原始文件的同一文件夹中,并带有描述性名称。通过这种方式,您可以在每次更新系统时应用修补程序。

答案 1 :(得分:1)

CodeIgniter是开源的,因此如果您认为这是正确的做法,您可以根据需要对其进行修改。我一直在修改我的。使某些东西成为公共函数通常不会导致重大问题,但是您可以考虑单独保留现有的私有final_output()并在Output.php中创建一个新的公共函数,仅供Smarty访问。您可以将此作为核心的扩展。更多信息是here