从CodeIgniter 1.7.3转换为2.0+

| 您好,感谢您的阅读。 我会直接指出:我有一个我一直在使用CodeIgniter 1.7.3构建的网站项目,我非常喜欢使用它,但是我一直在考虑升级到CI 2.0+。 我尝试了一个直接副本,只是将控制器,模型和视图的文件夹移到了CI 2.0框架上,但是在尝试查看页面时出现了500个服务器错误。 经过一番调查后,我发现您所有的控制器现在都必须使用\“ CI_Controller \”作为其父类。我还注意到,如果要在控制器类中包含构造函数,则它必须使用语法“ function __construct()\”作为其名称和父类。似乎CI 2.0+不再支持使用与类名同名的构造函数,例如\“不再支持类Blog扩展CI_controller {函数Blogs(){parent :: __ construct();}} \”?   我一直在阅读CI更改日志,但我所看到的只是错误修复和新功能,与旧版CI的兼容性问题无关吗?   还有其他人知道其他任何秘密陷阱吗? 谢谢, H     
已邀请:
        CI 2.x删除了与PHP4的所有兼容性,并且还更新了许多标准以兼容PHP 5.3。其中之一是您遇到的构造函数问题。从PHP 5.3开始,函数
ClassName()
不再是类的构造函数,而仅仅是另一个函数。创建类的新实例时,必须显式声明一个“ 1”函数来执行所有需要完成的任务。鉴于此,您应该看到在子构造函数中调用ѭ2不再有意义,因为该函数将不再是父构造函数。 我最近不得不解决的另一个陷阱是现在如何处理
$_GET
数组。在1.x版本中,您可以使用查询字符串来传回额外的信息,而仍然使用URI段来路由到控制器和功能。这对于AJAX调用特别有用,在AJAX调用中,您可能并不总是知道在特定请求中向服务器发送和从服务器发送的所有参数。在2.x版本中,config.php文件包含一个新选项
$config[\'allow_get_array\']
。如果要使用查询字符串,则必须将其设置为“ 5”,否则输入类将在每个请求中清除“ 3”数组,作为CI初始化例程的一部分。 并不是什么陷阱,但您可能会发现有用的是config / autoload.php中的新选项,该选项允许您向项目中添加新的应用程序目录。如果您使用CI处理多个不同的项目,并且希望将所有有用的库保存在一个位置,则可以将该位置添加到“ 7”。 CI希望此数组中的任何路径包含子目录\“ controllers \”,\“ models \”,\“ libraries \”和\“ helpers \”。如果您没有这些目录,它不会发牢骚,但您至少要使用它们来装载任何要加载的目录,即库将与主应用程序文件夹一样位于/ libraries中。     
        您是否已阅读从1.7.x升级到2.x的官方指南? 简而言之 将模型和控制器更新为 扩展CI_Model和CI_Controller 更新父构造函数调用   Wow类扩展了CI_Controller {
      function __construct()
      {
          parent::__construct();
                    //your stuff
      }

      function index()
      {
               // just for example 
      }
    }
    

要回复问题请先登录注册