CodeIgniterコアシステムを拡張して、複数のサイトでカスタム機能を使用することはできますか?
-
10-10-2019 - |
質問
現在、CodeIgniterを使用して1つのサイトをサポートしています。その主な目的は、複数の編集可能なテーブルキットテーブルを表示し、編集時に到着するAjaxを処理することです。一種のphpmyadmin [非常に] lite。サイトのメインワーキングを実行する多くのコアヘルパーとコントローラーがあり、一部のサイト固有のコントローラーとヘルパーと混ざり合っています。
別のサイトのコアコードベースを再利用できるように、サイトを再構築したいと思います。ただし、デフォルトのコントローラー関数と同じコントローラーにいくつかのCutsom関数がありたいと思います。 IEシステムファイルのどこかに:
class My_core extends Controller{
/*
Lots of base functions
*/
}
そして1つのサイトで:
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の下部にオートローダーを置くことができます。正しいフォルダー(最初にローカル、次に共有フォルダー構造)をチェックしている限り、すべてが非常にうまく機能するはずです。
他のヒント
これがまだあなたに役立つかどうかはわかりませんが、私がやったことはここにあります。
Palladium.comとOsmium.comの2つのWebサイトがあるとします。
私のファイルツリーはこのように見えます
/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/libraries私は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');
「これは緊急放送システムのテストです」が表示されます。