Могу ли я расширить систему Codeigniter Core, чтобы использовать свои пользовательские функции на нескольких сайтах?
-
10-10-2019 - |
Вопрос
В настоящее время я использую CodeIgniter для поддержки одного сайта, основной целью которой является отображение нескольких редактируемых таблиц TableKit и обработку AJAX, который прибывает при их редактировании. Своего рода phpmyadmin [очень] lite. Он имеет ряд основных помощников и контроллеров, которые запускают основные работы сайта, смешанные с некоторыми контроллерами и помощниками, специфичными для сайта.
Я хотел бы реструктурировать свой сайт, чтобы я мог повторно использовать основную кодовую основу на другом сайте. Тем не менее, я все равно хотел бы иметь некоторые функции контроллера по умолчанию и некоторые функции сокращения в одном и том же контроллере; т.е. где -то в системном файле:
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');
и «Это тест системы экстренной трансляции».