我正在将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核心文件是否合适?或者它将来会导致错误吗?
答案 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。