この記事の例では、CodeIgniter がコア クラスを拡張する方法について説明します。参考のために皆さんと共有してください。詳細は次のとおりです:
CIのコアクラス、補助クラス、関数の拡張は、設定ファイルでsubclass_prefix拡張プレフィックスが指定されており、拡張メソッドのデフォルトはMY_です。以下にまとめます。
1. コアクラスを拡張する
コアクラスはsystem/coreの下にあり、それらのほとんどは初期化中に自動的にロードされます。コア クラスを拡張するには、コア クラスを置き換える方法とコア クラスを継承する方法の 2 つがあります。
コアクラスを置き換える
application/coreディレクトリにsystem/coreと同名のファイルが存在する場合、coreクラスは自動的に置き換えられます。 Loader.php を例にとると、このクラスは application/core/Loader.php の作成後に自動的にロードされます。このクラスはシステムのコア クラスであるため、Loader.php が CI_Loader クラスのメソッドを実装していない場合、次のようなエラーが報告されます:
リーリーコアクラスを置き換えるには、コア機能への影響を避けるために、そのクラス内のすべてのメソッドを書き直す必要があります。ただし、ほとんどの場合、コア全体を書き直す必要はありません。この場合、基本的には、継承を使用できます。
コアクラスを継承する
コア クラスを継承するには、subclass_prefix をプレフィックスとして付ける必要があります。Input クラスを拡張する場合は、application/core/MY_Input.php を作成する必要があり、MY_Input は次のように CI_Input クラスを継承する必要があります。 リーリー
2. CI クラス ライブラリを拡張する
一部の補助クラスは system/libraries の下に実装されており、これらのクラスを拡張する必要がある場合、ディレクトリが application/libraries になることを除いて、処理方法はコア クラスと同じです。 3. 拡張された補助機能補助関数は application/helpers ディレクトリに格納されます。 補助関数の「継承」方法は上記と同じです。 CI の補助関数はすべて function_exists を使用して存在するかどうかを判断するため、「書き換え」の目的も達成できます。たとえば、配列ソートメソッドを配列に追加します:
リーリー一般に、CI フレームワークのシステム ディレクトリ内のコンテンツのほとんどは書き換え可能であり、非常に柔軟で拡張が簡単です。ただし、拡張機能が多ければ多いほど、CI では実現できない機能が拡張されることに注意する必要がある場合があります。最後に、CI は拡張機能を提供するため、システム配下の内容を直接変更しないでください。
さらに codeigniter 関連のコンテンツに興味のある読者は、このサイトの特別トピック「codeigniter チュートリアルの概要」と「CI (CodeIgniter) フレームワークの高度なチュートリアル」をチェックしてください
この記事が、CodeIgniter フレームワークに基づく皆様の PHP プログラム設計に役立つことを願っています。
興味がありそうな記事: Codeigniter コントローラー コントローラー継承問題事例分析
http://www.bkjia.com/PHPjc/1094768.html