Могу ли я расширить базовую систему codeigniter, чтобы использовать свои пользовательские функции на нескольких сайтах? - PullRequest
1 голос
/ 16 ноября 2010

В настоящее время я использую CodeIgniter для поддержки одного сайта, основное назначение которого - отображать несколько редактируемых таблиц таблиц и обрабатывать AJAX, который появляется при их редактировании.Своего рода PHPMyAdmin [VERY] 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
    */
}

Есть ли у кого-нибудь какие-либо указанияо том, как я могу это сделать?

Спасибо,

Lemiant

Ответы [ 2 ]

3 голосов
/ 16 ноября 2010

Если вы используете CodeIgniter 2.0, вы можете достичь этого с помощью пакетов.Они позволят вам загружать помощники, библиотеки и модели из любого места, поэтому в каждом приложении просто настройте пакет для загрузки из этой общей папки.

Что касается базовых библиотек (которыми будет MY_Controller), вам придется реализоватьВаша собственная функция __autoload ():

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

Вы можете установить автозагрузчик внизу config.php.Пока он проверяет правильные папки (сначала локальные, затем структуру общих папок), все должно работать очень хорошо.

1 голос
/ 17 ноября 2010

Не знаю, полезно ли это вам, но вот что я сделал.

скажем, у меня есть 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 / library у меня есть файл с именем 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');

и появится сообщение «Это проверка системы аварийного вещания».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...