CodeIgniter自定义控制器MY_Controller用法分析_PHP
本文实例讲述了CodeIgniter自定义控制器MY_Controller用法。分享给大家供大家参考,具体如下:
Codeigniter所有的控制器都必须继承CI_Controller类,但CI_Controller类位于system目录下,不太方便修改。为方便做一些公用的处理,通常情况下我们会在core下创建MY_Controller,用来继承CI_Controller,从而项目中所有的控制器继承MY_Controller。
那么,MY_Controller 通常会做些什么呢?
所有的控制器都继承了MY_Controller, MY_Controller常常会加载一些公用帮助函数、公用类库,以及实现一些公用的方法。
公用的方法?公有的方法?
看到这些方法会意识到一个问题,如果方法是public的,那是否可以通过浏览器访问到。答案是可以的!这样不该让用户访问到的方法让用户访问到了。那设置protected吧。。。
备注:CI_Controller中写public方法不会被访问到,框架限制了CI_Controller中方法通过浏览器访问。
随着项目的不断进展,MY_Controller中的公用方法会越来越多。如果此时要增加后台管理的功能,所有的控制器依然继承MY_Controller,那其中的很多方法可能不适用了。如果后台需要的一些公用方法也写在这里,这里将会变得混乱。
如何按模块区分不同的控制器?
有两种处理的方式,第一种是通过不同的公用控制器文件来区分,由控制器去决定继承哪一个公用控制器,当然这里得引入公用文件。还有这种方式是可以通过对象的一个属性来维护,不同的模块赋予该属性不同的对象。如:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class MY_Controller extends CI_Controller { public function __construct($type = NULL) { parent::__construct(); switch($type) { case 'api' : $this->load->library('api_helper', NULL, 'helper'); break; case 'admin' : $this->load->library('admin_helper', NULL, 'helper'); break; default : $this->load->library('app_helper', NULL, 'helper'); break } } } /* End of file MY_Controller.php */ /* Location: ./application/core/MY_Controller.php */
控制器调用MY_Controller构造函数并传入type值,根据不同的type值会加载不同的类库,然后给类定义一个统一的别名,方便处理。具体的library可以处理该模块公用的方法或load公用的资源,相当于该模块的一个公用类。当然处理方式也可以是直接通过路由中的目录名或者控制器名称来控制等等。
这样避免了加载不同的文件,调用方法时只需要通过$this->helper对象调用。在仔细看看,可以发现不同模块的公用类是放在library中,放在library或helper中都可以使用get_intance获取控制器对象,但每次使用都需要获取实例,相对麻烦,如果是模型呢?感觉也不太好。其中的公用方法有一些会跟业务逻辑相关,放在library感觉不太合适。
业务逻辑好像并没有一个好的地方去实现,控制器的私有方法?模型?
先总结下上面的处理方法:
1、不同模块之间可以按需加载以及实现自定义的公用方法,各个模块之间互不影响。如果各模块之间的公用方法比较多,也可以再去继承一个公用的类。
2、公用方法放在library中,调用CI实例不方便。
3、如果不喜欢$this->herlper的调用方法,可以让控制器去继承不同的公用控制器,思路是一样的,只是可能需要手动引入文件。
更多关于CodeIgniter相关内容感兴趣的读者可查看本站专题:《codeigniter入门教程》和《CI(CodeIgniter)框架进阶教程》
希望本文所述对大家基于CodeIgniter框架的PHP程序设计有所帮助。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック

Windows がゲーム プラットフォームとして選ばれるようになったため、そのゲーム指向の機能を特定することがさらに重要になっています。その 1 つは、Windows 11 で Xbox One コントローラーを調整する機能です。組み込みの手動キャリブレーションを使用すると、ドリフト、ランダムな動き、またはパフォーマンスの問題を取り除き、X、Y、Z 軸を効果的に調整できます。利用可能なオプションが機能しない場合は、いつでもサードパーティの Xbox One コントローラー調整ツールを使用できます。確認してみましょう! Windows 11 で Xbox コントローラーを調整するにはどうすればよいですか?続行する前に、コントローラーをコンピューターに接続し、Xbox One コントローラーのドライバーを更新していることを確認してください。この作業中に、利用可能なファームウェアのアップデートもインストールします。 1. 風を利用する

Netflix のアバターは、ストリーミング ID を視覚的に表現したものです。ユーザーはデフォルトのアバターを超えて自分の個性を表現できます。 Netflix アプリでカスタム プロフィール写真を設定する方法については、この記事を読み続けてください。 Netflix でカスタム アバターをすばやく設定する方法 Netflix には、プロフィール写真を設定する機能が組み込まれていません。ただし、ブラウザに Netflix 拡張機能をインストールすることでこれを行うことができます。まず、Netflix 拡張機能のカスタム プロフィール画像をブラウザにインストールします。 Chrome ストアで購入できます。拡張機能をインストールした後、ブラウザで Netflix を開き、アカウントにログインします。右上隅にあるプロフィールに移動し、をクリックします

Win11で背景画像をカスタマイズするにはどうすればよいですか?新しくリリースされた win11 システムには多くのカスタム機能がありますが、多くの友人はこれらの機能の使い方を知りません。一部の友人は、背景画像が比較的単調だと考えており、背景画像をカスタマイズしたいと考えていますが、背景画像をカスタマイズする方法がわかりません。背景画像を定義する方法がわからない場合、エディターは次の手順をまとめています。 Win11 で背景画像をカスタマイズするには、以下をご覧ください。 Win11 で背景画像をカスタマイズする手順: 1. 図に示すように、デスクトップの [勝利] ボタンをクリックし、ポップアップ メニューの [設定] をクリックします。 2. 図に示すように、設定メニューに入り、「個人用設定」をクリックします。 3. 図に示すように、[Personalization] に入り、[Background] をクリックします。 4. 背景設定を入力し、クリックして写真を参照します

ベン図は、セット間の関係を表すために使用される図です。ベン図を作成するには、matplotlib を使用します。 Matplotlib は、対話型のチャートやグラフを作成するために Python で一般的に使用されるデータ視覚化ライブラリです。インタラクティブな画像やグラフの作成にも使用されます。 Matplotlib は、チャートやグラフをカスタマイズするための多くの関数を提供します。このチュートリアルでは、ベン図をカスタマイズするための 3 つの例を説明します。 Example の中国語訳は次のとおりです: Example これは 2 つのベン図の交差を作成する簡単な例です。最初に、必要なライブラリをインポートし、ベンをインポートしました。次に、データセットを Python セットとして作成し、その後「venn2()」関数を使用して

Eclipse でショートカット キーの設定をカスタマイズするにはどうすればよいですか?開発者にとって、ショートカット キーをマスターすることは、Eclipse でコーディングする際の効率を向上させるための鍵の 1 つです。強力な統合開発環境として、Eclipse は多くのデフォルトのショートカット キーを提供するだけでなく、ユーザーが独自の好みに応じてショートカット キーをカスタマイズすることもできます。この記事では、Eclipseでショートカットキーの設定をカスタマイズする方法と具体的なコード例を紹介します。 Eclipseを開く まず、Eclipseを開いて次のように入力します。

iPhone の iOS 17 アップデートは、Apple Music にいくつかの大きな変更をもたらします。これには、プレイリストで他のユーザーとコラボレーションしたり、CarPlay を使用してさまざまなデバイスから音楽再生を開始したりすることが含まれます。これらの新機能の 1 つは、Apple Music でクロスフェードを使用できる機能です。これにより、トラック間をシームレスに移行できるようになり、複数のトラックを聴く場合に優れた機能になります。クロスフェードは全体的なリスニング体験を向上させるのに役立ち、トラックが変わったときに驚いたり、体験から脱落したりすることがなくなります。この新機能を最大限に活用したい場合は、iPhone での使用方法を次に示します。最新の情報が必要な Apple Music のクロスフェードを有効にしてカスタマイズする方法

CodeIgniter でカスタム ミドルウェアを実装する方法 はじめに: 最新の Web 開発では、ミドルウェアがアプリケーションで重要な役割を果たします。これらは、リクエストがコントローラーに到達する前または後に、共有処理ロジックを実行するために使用できます。 CodeIgniter は、人気のある PHP フレームワークとして、ミドルウェアの使用もサポートしています。この記事では、CodeIgniter でカスタム ミドルウェアを実装する方法を紹介し、簡単なコード例を示します。ミドルウェアの概要: ミドルウェアは一種のリクエストです

1. 下の図はediusのデフォルトの画面レイアウトです EDIUSのデフォルトのウィンドウレイアウトは横レイアウトのため、シングルモニタ環境では多くのウィンドウが重なってプレビューウィンドウがシングルウィンドウモードになります。 2. メニューバーの[表示]から[デュアルウィンドウモード]を有効にすると、プレビューウィンドウに再生ウィンドウと録音ウィンドウを同時に表示できます。 3. [表示メニューバー > ウィンドウレイアウト > 一般] でデフォルトの画面レイアウトに戻すことができます。また、ウィンドウをドラッグして好みのレイアウトにし、[表示 > ウィンドウ レイアウト > 現在のレイアウトを保存 > 新規作成] をクリックすると、自分に合ったレイアウトをカスタマイズして、よく使う画面レイアウトとして保存することもできます。ポップアップ [現在のレイアウトを保存] レイアウト] 小さなウィンドウにレイアウト名を入力し、OK をクリックします
