1

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

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

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
    */
}

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

谢谢,

勒米安特

4

2 回答 2

3

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

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

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

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

于 2010-11-16T11:04:34.157 回答
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";
    }
}

从 palladium.com 和 osmium.com 的任何地方我都可以打电话

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

“这是对紧急广播系统的考验”将出现。

于 2010-11-17T14:14:59.213 回答