我可以扩展codeigniter核心系统,在多个站点上使用我的自定义功能吗?

时间:2010-11-15 23:04:35

标签: php codeigniter frameworks packages codeigniter-2

我目前正在使用CodeIgniter来支持一个站点,其主要目的是显示多个可编辑的tablekit表,并处理编辑它们时到达的AJAX。一种PHPMyAdmin [VERY] Lite。它有许多核心助手和控制器,它们运行站点的主要工作,与一些特定于站点的控制器和助手混合。

我想重构我的网站,以便我可以在其他网站中重用核心代码库。但是,我仍然希望在同一个控制器中有一些默认的控制器功能和一些cutom功能;即在某个系统文件中:

class My_core extends Controller{
    /*
      Lots of base functions
    */
}

并在一个网站上:

class site_1 extends My_Core{
    /*
       Site specific functions
    */
}

然后在另一个网站上:

class site_2 extends My_Core{
    /*
       Site specific functions
    */
}

有没有人对如何做到这一点有任何指导?

谢谢,

Lemiant

2 个答案:

答案 0 :(得分:3)

如果您使用的是CodeIgniter 2.0,则可以通过软件包实现大部分功能。它们将允许您从任何地方加载帮助程序,库和模型,因此在每个应用程序中只需配置要从该共享文件夹加载的程序包。

对于核心库(MY_Controller将是),你必须实现自己的__autoload()函数:

http://php.net/manual/en/language.oop5.autoload.php

您可以将自动加载器放在config.php的底部。只要它检查正确的文件夹(首先是本地文件夹,然后是共享文件夹结构),它应该都可以正常工作。

答案 1 :(得分:1)

我不知道这对你是否仍然有帮助,但这是我所做的。

说我有2个网站,palladium.com和osmium.com。

我的文件树看起来像这样

/var/www/system/ (the CI system folder)

/var/www/palladium/application
/var/www/palladium/public/index.php

/var/www/osmium/application
/var/www/osmium/public/index.php
这些index.php文件中的

是定义/ system /存储位置的行。我把它设置为

$system_folder = "../../system";

现在在/ var / www / system / libraries中我有一个名为MY_TestClass

的文件
<?php

class MY_TestClass {
    public function MY_TestClass() {
        echo "this is a test of the emergency broadcast system";
    }
}

从BOTH palladium.com和osmium.com内部的任何地方我都可以致电

$this->load->library('MY_TestClass');

和“这是对紧急广播系统的测试”将出现。