検索
ホームページバックエンド開発PHPチュートリアルCodeigniter のいくつかの優れた機能の概要、codeigniter summary_PHP チュートリアル

Codeigniter のいくつかの優れた機能の概要、Codeigniter の概要

最近、Codeigniter を使用して他の人が書いたプロジェクトを引き継いで改善する予定です。以前 CI を使用したことがありますが、完全に自分の希望に従って作成し、一部の CI ルーチンに従っていませんでした。一般の人が使うプロジェクトの場合は、フレームワークの仕様に従うのがベストなので、将来引き継いだときに笑われないようまとめておくと良いでしょう。

1. まずはMVCです

MVC をまだ知らない場合は、できるだけ早く学習する必要があります。モデルでデータにアクセスし、コントローラーでビジネス ロジックを実行し、ビューで HTML コードを記述することの価値がすぐにわかります。これまでこのモデルを使用してプログラミングしたことがない場合は、額にしわを寄せるかもしれませんが、試してみる機会を与えてください。

経験則としては、コントローラーに入れるものを減らし、「車輪を再発明しない」という DRY ルールを覚えておいてください。同じコードを複数の場所に記述する場合は、その種類に応じてライブラリ、ヘルパー、またはモデルを作成するようにしてください。例えば、データベース接続クラスはよく使われるのでモデル化(システム側で提供)します。

MVC の本質を理解すると、これが習慣になり、MVC の簡潔なコードから多くの恩恵を受けるでしょう。

1 つの原則は、複雑な操作をモデルに任せることです。コントローラーはむしろアーキテクトに似ています。モデルは大変なお仕事です。ビューは画家です。コントローラーはモデルに何かを投げるだけでよく、データが異常であるかどうかを気にする必要はなく、フラグと対応するデータを返します。このように、MVC アーキテクチャが反映されています。

モデルは実際には電子レンジなどの電化製品に似ています。使いやすいほど、より多くの人に好まれます (食べ物を入れてスタートを押し、ご飯が炊き上がります)。インターフェイスが少ないという利点があります。それは、モデルがアップグレードされ、コードが最適化された場合、外部世界との結合度が高くないことです。たとえ内部的にうまく書かれていないとしても、インターフェイスはきれいで使いやすいです。

2. アプリケーションとシステムのパス

システム フォルダーとアプリケーション フォルダーを Webroot の外に配置するのが最善です。index.php が FTP サーバーの /public_html/ パスの下に配置されている場合は、システムをルート ディレクトリ /system の下に配置するようにしてください。 PHP ファイルにアクセスできるのは、index.php のみです。

index.php ファイル内の $system_folder と $application_folder の値を変更することを忘れないでください。$system_folder の値は、index.php ファイルを基準にし、$application_folder の値は、システムディレクトリ。

3. エラーの報告とデバッグ

よくある間違いは、PHP エラーとデータベース エラーのレポートをオフにするのを忘れることです。これは危険です。公開サイトでは、error_reporting は 0 に設定する必要があり、データベース設定 db_debug は false に設定する必要があります。ini_set('display_errors') は、エラー情報が表示されないように設定します。 、「オフ」);

コーディングとデバッグを行うときは、アプリケーションをリリースする前に、error_reporting を E_ALL に設定し、すべてのメモと警告に対処する必要があります。

簡単な方法は、Web サイトの実行中に、application/config/database.php ファイルで db_debug の値を定数 MP_DB_DEBUG に設定することです。

コードをコピーします コードは次のとおりです:

ini_set('display_errors', 'オフ');
エラー報告(0);
定義('MP_DB_DEBUG', false);
コーディングとデバッグでは次のように設定します:

コードをコピーします コードは次のとおりです:
ini_set('display_errors', 'オン');
エラー報告(E_ALL);
定義('MP_DB_DEBUG', true);

4. 安全性の問題は非常に重要です

フォームによって送信された POST データ、COOKIE データ、URI データ、XML-RPC データ、または SERVER 配列内のデータのいずれであっても、プログラムにデータを受信する前に、次の 3 つの手順を実行することをお勧めします。

不良データをフィルタリングします。

データを検証して、タイプ、長さ、サイズなどが正しいことを確認します (場合によっては、このステップが最初のステップの代わりになることもあります)
データベースに送信する前にデータを変換します。
SQL インジェクション、XSS、CSRF については、それらを理解した上で、それらを防止する方法を採用するかどうかを決定する必要があります。 CI マニュアルのセキュリティ ガイドラインと入力およびセキュリティ カテゴリを参照できます。おそらく最も重要な原則は、データベースまたはファイル システムにデータを送信する前にすべてのユーザー入力をチェックすることです。

SQLインジェクション。 CI に付属する Active Record を使用すると、この問題を解決できます。

XSS (クロスサイト スクリプティング)。 $config['global_xss_filtering'] = TRUE; を設定すると、POST および COOKIE でのクロスサイト スクリプティング攻撃の自動フィルタリングが有効になり、一部のリソースが消費されます。 POST と COOKIE が処理されるたびに個別に使用することもでき、$this->input->post('some_data', TRUE); のように 2 番目のパラメーターを TRUE に設定します。フォーム検証クラスは XSS も提供します。 $this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean');
などのフィルタリング オプション CSRF (クロスサイト リクエスト フォージェリ)。 CI 2.0 には CSRF チェックが組み込まれています。フォーム送信と URL リンクの保護について詳しくは、Google で「CSRF トークン」を検索し、「double cookie submit」または「double submit cookie」を検索してください。
SPAM (スパムおよび悪意のある登録)。電子メール フォーム、コメント フォーム、その他のユーザーが送信したさまざまな無料データを保護することで、スパムを防止します。これを行うための簡単な方法は、1 分間に 1 つの IP/ユーザー クライアントのみに送信を許可することです。 CI2 には CAPTCHA 補助機能が組み込まれています。

5. データベースとORM

CodeIgniter には、SQL ステートメントを使用せずにクエリ ステートメントを作成できる組み込みライブラリ Active Record があります。これは、SQL ステートメントにあまり熟練していない場合、または SQL インジェクションを防ぐ方法がわからない場合に適した方法です。

より強力なツールが必要な場合は、有名な ORM である Object Relational Mapper の使用を検討できます。残念ながら、CodeIgniter には ORM ライブラリが付属していませんが、他にいくつかの優れたオプションがあります。

おそらく最も人気のあるのは DataMapper OverZealous Edition (DMZ) です。Doctrine (ここにチュートリアルがあります) を使用することもできます。別のオプションである RapidDataMapper は作者自身の作品です。

6. コードの練習

簡潔なコードを作成して自分のコードを理解し、他の人のコードをコピーして貼り付けるだけでなく、コーディング スキルを向上させ続けてください。ハンドブックの開発ガイドラインは、より良いコードの書き方を学ぶ場所です。

1.ドライ。車輪の再発明を繰り返さないでください。コントローラーではなく、ライブラリ、ヘルパー、モデルなどの再利用可能なコードを配置してください。コードをコピーするときは、すでに 2 回目のコードが配置されている可能性があります。間違った場所。

2. キャッシング。キャッシュは、特にデータベースへのアクセスを減らすことにより、パフォーマンスを向上させる優れた方法です。 Web ページのキャッシュとデータベースのキャッシュを参照したり、フォーラムで他のオプションを検索したりできます。たとえば、MP_Cache は作者自身の作品です。

3. HTTP ヘッダー。クライアント側では、別の HTTP ヘッダーをブラウザーに送信してページをキャッシュすることでパフォーマンスを向上させることができます。また、AJAX を使用する場合は、ブラウザーのキャッシュを無効にすることにも注意する必要があります。

キャッシュを無効にする例:

コードをコピーします コードは次のとおりです:
$this->output->set_header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
$this->output->set_header("キャッシュ制御: ストアなし、キャッシュなし、再検証する必要があります");
$this->output->set_header("キャッシュ制御: post-check=0, pre-check=0", false);
$this->output->set_header("プラグマ: キャッシュなし");

キャッシュを長期間保持する例(CSS、JavaScriptなど):

コードをコピーします コードは次のとおりです:
$this->output->set_header('キャッシュ制御: プライベート、事前チェック=0、事後チェック=0、最大期間=2592000');
$this->output->set_header('Expires: ' . gmstrftime("%a, %d %b %Y %H:%M:%S GMT", time() + 2592000));
$this->output->set_header('Last-Modified: ' . gmstrftime("%a, %d %b %Y %H:%M:%S GMT", time() - 20));

7. テンプレートのレンダリングでは毎回ヘッダーとフッターを呼び出す必要はありません

MY_Controller ヘッダーと __construct 関数に次の内容を追加して、application/config/constants.php でデフォルトのテンプレート情報を自分で定義する必要があります。

コードをコピーします コードは次のとおりです:
クラス MY_Controller は CI_Controller を拡張します {
protected $_data; // テンプレート値の配列
protected $_tplext; //デフォルトのテンプレートサフィックス
protected $_header; // デフォルトのヘッダー テンプレート
protected $_footer; // デフォルトの下部テンプレート
パブリック関数 __construct () {
parent::__construct();
$this->_data['title'] = SITE_NAME;
$this->_tplext = '.php';
$this->_header = 'テンプレート/ヘッダー';
$this->_footer = 'テンプレート/フッター';
// 開発モードでパフォーマンス分析を有効にする
If (環境 === '開発') {
$this->output->enable_profiler(TRUE);
}
}
}

8. すべてのクラスが CI_Controller を継承する必要はありません

新しく追加されたコントローラーは CI_Controller を継承せず、代わりに MY_Controller を継承します。

コードをコピーします コードは次のとおりです:
class Index extends MY_Controller {
パブリック関数 __construct () {
parent::__construct();
}
/**
* トップページ
​*/
パブリック関数インデックス () {
$this->_data['title'] = 'ホームページ' // 指定しない場合、デフォルトのタイトル SITE_NAME が使用されます
; $this->_view('index/index');
}
}


最後に、さらに 2 つ追加させてください:

9. CodeIgniter のファイル構造

cache は、キャッシュ ファイルを保存するために使用されます。 codeigniter フォルダーには、php4 と php5 との互換性を保つために、CI_Base の 2 つのバージョンが含まれています。ライブラリには、一般的に使用されるクラス ライブラリのほとんど (Model、View、Cotronller) が格納されます。作成する mvc は、既存の mvc クラスから継承する必要があります。これは、便利な作業を支援するために使用されます。他のモジュールの。 language は、複数の言語をサポートする言語パッケージです。

アプリケーション フォルダーは、モデル、ビュー、コントローラー、構成、エラー、フック、ライブラリなどのサブファイルを内部的に追加するために使用されます。最初の 3 つのフォルダーは、モデル、ビュー、コントローラーの作成に使用されます。作業のほとんどは独自の MVC を作成することであり、モデルとコントローラーの動作を支援するために、構成ファイルを config に追加し、一部のオブジェクトとメソッドをライブラリに追加できます。フックも CI_Hook の拡張です。詳細については、次の章を参照してください。

10. CodeIgniterの作業プロセス

http://www.google.com/blog/ などの http リクエストがある場合は、まず CI ブート ファイルindex.php を入力します。次に、index.php で何が行われているかを見てみましょう。

index は、まずアプリケーション フォルダー名を application に設定し、システム フォルダー名を system に設定します。次に、一連の厳密な判断を行って、それらを Unix スタイルのサーバー絶対ファイル パスに変換します。具体的には、2 つの重要な定数 APPPATH を定義します。分析によると、パスはシステムと同じレベルにある可能性があります: htdocs/application/ 、またはシステム フォルダにそのサブフォルダとして配置される可能性があります: htdocs/system/application/ 2 番目の方法を使用することをお勧めします。これは、Web サイト ドキュメントの基本ファイル パスである BASEPATH は、最終的には htdoc/system/ になります。最終的に、インデックス ブート ファイルは codeigniter/codeigniter.php に導入されます。次に、codeigniter で何が行われるかを見てみましょう。

codeigniter.php は、最初に Common.php、Compat.php、config/constants.php の 3 つのファイルを紹介します。 Common には、クラス ライブラリをロードするためのload_class、ログを記録するための log_message、エラー ページを紹介する show_404 などのいくつかの関数が含まれています。いくつかの重要な関数; Compat は主に php4 と php5 の関数の互換性の問題を解決し、定数はファイルの読み取りと書き込みのアクセス許可に関するいくつかの定数を定義します。

次に、codeigniter は最初のクラス ライブラリである Benchmark を読み込みます。このクラス ライブラリの最も単純なアプリケーションの 1 つは、Web ページの開始からコンパイルの終了までにかかる時間を計算することで、先頭にマークを付けます。コンパイルとレンダリングが終了すると、マークを追加して、費やした時間を計算できます。

次に、2 番目のクラス ライブラリであるフックがロードされます。このクラス ライブラリは Benchmark などのシステム ライブラリの下にあり、プログラムがコンパイルを開始する前に他のことを実行する機会を提供します。他のミッションでは約 8 つの機会が提供されます。詳細についてはユーザー ガイドを参照してください。ここでは最初のフックをインポートします。

次に、Config、URI、Router、Output、およびその他のクラス ライブラリをそれぞれロードします。次に、cache_override フックがあるかどうかを確認します。このフックを使用すると、Output クラスの _display_cache メソッドを置き換える関数をスケジュールできます。 _display_cache を直接出力し、キャッシュ コンテンツがあるかどうかを確認し、存在する場合はキャッシュを直接出力し、存在しない場合は実行を続行します。

その後、入力と言語のロードを続けます。前にロードされたクラス ライブラリはすべて参照であることに注意してください。次に、CI_Base オブジェクトのロードが最初に判断されます。 php4 バージョンでは、Loader が最初にロードされ、次に Base4 がロードされます。Base4 の CI_Base は CI_Loader を継承しますが、Base5 では、CI_Base と CI_Loader には継承関係がありません。

次のステップも非常に重要なステップです。このステップは、参照ではなくインスタンスであるコントローラー クラスをロードすることから始まり、ルーターを通じて http アドレスを解析してコントローラーとメソッドの名前を取得し、チェックします。アプリケーションコントローラが存在するかどうか、存在しない場合はエラーが報告され、存在する場合は判定が開始されます。

まとめ

まずはこれくらいまとめて、後ほど追加していきます。皆さんも気に入っていただければ幸いです。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/945703.html技術記事 Codeigniter の優れた機能のまとめ。最近、Codeigniter を使用して他の人が書いたプロジェクトを引き継いで改善する予定ですが、完全に自分のプロジェクトに準拠しています。
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHPの現在のステータス:Web開発動向を見てくださいPHPの現在のステータス:Web開発動向を見てくださいApr 13, 2025 am 12:20 AM

PHPは、現代のWeb開発、特にコンテンツ管理とeコマースプラットフォームで依然として重要です。 1)PHPには、LaravelやSymfonyなどの豊富なエコシステムと強力なフレームワークサポートがあります。 2)パフォーマンスの最適化は、Opcacheとnginxを通じて達成できます。 3)PHP8.0は、パフォーマンスを改善するためにJITコンパイラを導入します。 4)クラウドネイティブアプリケーションは、DockerおよびKubernetesを介して展開され、柔軟性とスケーラビリティを向上させます。

PHP対その他の言語:比較PHP対その他の言語:比較Apr 13, 2025 am 12:19 AM

PHPは、特に迅速な開発や動的なコンテンツの処理に適していますが、データサイエンスとエンタープライズレベルのアプリケーションには良くありません。 Pythonと比較して、PHPはWeb開発においてより多くの利点がありますが、データサイエンスの分野ではPythonほど良くありません。 Javaと比較して、PHPはエンタープライズレベルのアプリケーションでより悪化しますが、Web開発により柔軟性があります。 JavaScriptと比較して、PHPはバックエンド開発により簡潔ですが、フロントエンド開発のJavaScriptほど良くありません。

PHP対Python:コア機能と機能PHP対Python:コア機能と機能Apr 13, 2025 am 12:16 AM

PHPとPythonにはそれぞれ独自の利点があり、さまざまなシナリオに適しています。 1.PHPはWeb開発に適しており、組み込みのWebサーバーとRich Functionライブラリを提供します。 2。Pythonは、簡潔な構文と強力な標準ライブラリを備えたデータサイエンスと機械学習に適しています。選択するときは、プロジェクトの要件に基づいて決定する必要があります。

PHP:Web開発の重要な言語PHP:Web開発の重要な言語Apr 13, 2025 am 12:08 AM

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

PHP:多くのウェブサイトの基礎PHP:多くのウェブサイトの基礎Apr 13, 2025 am 12:07 AM

PHPが多くのWebサイトよりも優先テクノロジースタックである理由には、その使いやすさ、強力なコミュニティサポート、広範な使用が含まれます。 1)初心者に適した学習と使用が簡単です。 2)巨大な開発者コミュニティと豊富なリソースを持っています。 3)WordPress、Drupal、その他のプラットフォームで広く使用されています。 4)Webサーバーとしっかりと統合して、開発の展開を簡素化します。

誇大広告を超えて:今日のPHPの役割の評価誇大広告を超えて:今日のPHPの役割の評価Apr 12, 2025 am 12:17 AM

PHPは、特にWeb開発の分野で、最新のプログラミングで強力で広く使用されているツールのままです。 1)PHPは使いやすく、データベースとシームレスに統合されており、多くの開発者にとって最初の選択肢です。 2)動的コンテンツ生成とオブジェクト指向プログラミングをサポートし、Webサイトを迅速に作成および保守するのに適しています。 3)PHPのパフォーマンスは、データベースクエリをキャッシュおよび最適化することで改善でき、その広範なコミュニティと豊富なエコシステムにより、今日のテクノロジースタックでは依然として重要になります。

PHPの弱い参照は何ですか、そしていつ有用ですか?PHPの弱い参照は何ですか、そしていつ有用ですか?Apr 12, 2025 am 12:13 AM

PHPでは、弱い参照クラスを通じて弱い参照が実装され、ガベージコレクターがオブジェクトの回収を妨げません。弱い参照は、キャッシュシステムやイベントリスナーなどのシナリオに適しています。オブジェクトの生存を保証することはできず、ごみ収集が遅れる可能性があることに注意する必要があります。

PHPで__invoke Magicメソッドを説明してください。PHPで__invoke Magicメソッドを説明してください。Apr 12, 2025 am 12:07 AM

\ _ \ _ Invokeメソッドを使用すると、オブジェクトを関数のように呼び出すことができます。 1。オブジェクトを呼び出すことができるように\ _ \ _呼び出しメソッドを定義します。 2。$ obj(...)構文を使用すると、PHPは\ _ \ _ Invokeメソッドを実行します。 3。ロギングや計算機、コードの柔軟性の向上、読みやすさなどのシナリオに適しています。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

SublimeText3 Mac版

SublimeText3 Mac版

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