Могу ли я расширить систему Codeigniter Core, чтобы использовать свои пользовательские функции на нескольких сайтах?

StackOverflow https://stackoverflow.com/questions/4189738

Вопрос

В настоящее время я использую 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');

и «Это тест системы экстренной трансляции».

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top