我可以扩展CodeIgniter Core系统,在多个站点上使用我的自定义功能吗?
-
10-10-2019 - |
题
我目前正在使用CodeIgniter来支持一个站点,其主要目的是显示多个可编辑的表智能表,并处理编辑时到达的AJAX。一种phpmyadmin [非常]的精简版。它有许多核心助手和控制器,它们运行网站的主要工作原理,并与某些网站特定的控制器和助手混合在一起。
我想重组我的网站,以便可以在另一个站点中重复使用核心代码库。但是,我仍然希望在同一控制器中具有一些默认的控制器功能和一些切割功能。 IE在系统文件中的某个地方:
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
*/
}
有人对我如何执行此操作有任何指导吗?
谢谢,
骗子
解决方案
如果您使用的是CodeIgniter 2.0,则可以使用软件包实现大部分。他们将让您从任何地方加载帮助者,库和模型,因此在每个应用程序中,只需配置一个从该共享文件夹加载的软件包即可。
至于核心库(My_controller将是),您将必须实现自己的__autoload()函数:
http://php.net/manual/en/language.oop5.autoload.php
您可以将自动加载器放在config.php的底部。只要它检查正确的文件夹(首先是本地,然后是共享文件夹结构),它都应该很好地工作。
其他提示
我不知道这是否对您有帮助,但我的所作所为。
假设我有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_folder = "../../system";
现在内部/var/www/system/库,我有一个名为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');
并且“这是对紧急广播系统的测试”将出现。
不隶属于 StackOverflow