跨多个CI文件夹共享常用功能

时间:2014-02-13 17:26:11

标签: php apache codeigniter

我的htdocs文件夹中的每个网站都有多个CI文件夹,这里我希望在所有这些文件夹中共享一些常用功能。 我按照以下方式配置了我的virtaul主机。

<VirtualHost *>
    DocumentRoot "C:/xampp/htdocs/portal1" 
    ServerName test.exp1.org
    <Directory "C:/xampp/htdocs/portal1">
        Order allow,deny Allow from all
    </Directory>
</VirtualHost>

<VirtualHost *>
    DocumentRoot "C:/xampp/htdocs/portal2"
    ServerName test.exp2.org
    <Directory "C:/xampp/htdocs/portal2">
        Order allow,deny Allow from all
    </Directory>
</VirtualHost>

每个门户文件夹都包含自己的CI,但是每个文件夹中都复制了许多功能,因此我希望它们存储在常用的位置,这样两个文件夹都可以使用它们。

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

您可以按照引导here

将每个应用程序拆分到自己的文件夹中

然后在每个应用程序的每个index.php文件中共享相同的“system”文件夹,因此您使用相同的CI版本,所以假设您有:

C:\xampp\htdocs\

当您的apache root(xampp使用的是webserver)时,您可能希望将系统文件夹放在公共可见文件夹之外:

C:\xampp\system

然后你会得到这样的每个应用程序:

C:\xampp\htdocs\portal1
C:\xampp\htdocs\portal2
C:\xampp\htdocs\portaln...

完成后,请确保 portalN 文件夹中的每个index.php指向同一个系统文件夹:

$system_path = '../../system';

我强烈建议将“system”重命名为更有意义的内容,例如“codeigniter-2.1.4”或您使用的任何版本,因为它至少会告诉您每个Web应用程序使用的版本。

最后,您可以创建一个新的helper。哪个是可用的应用程序而无需实例化CI中的任何内容。你只需要手动加载它:

$this->load->helper('helper_name');

如果您计划在多个控制器/模型/视图中使用它,请在autoload.php中自动加载:

$autoload['helper'] = array('helper_name');

这里的诀窍是将你的帮助器放在你的“system / helpers”文件夹中,而不是把它放在每个应用程序文件夹上,这样,既然CI实际上是从系统文件夹加载的,它也会加载你的帮助器应用程序也是。