Codeigniter-basic-concepts

提供:Dev Guides
移動先:案内検索

CodeIgniter-基本概念

コントローラー

コントローラーは単純なクラスファイルです。 名前が示すように、URIによってアプリケーション全体を制御します。

コントローラーの作成

まず、 application/controllers フォルダーに移動します。 ここには、 indexlWelcome.php の2つのファイルがあります。 これらのファイルはCodeIgniterに付属しています。

これらのファイルはそのままにしてください。 「 Test.php 」という名前の同じパスの下に新しいファイルを作成します。 そのファイルに次のコードを書きます-

<?php
   class Test extends CI_Controller {

      public function index() {
         echo "Hello World!";
      }
   }
?>
*Test* クラスは、 *CI_Controller* と呼ばれる組み込みクラスを拡張します。 このクラスは、独自のコントローラークラスを作成する場合は常に拡張する必要があります。

コントローラーの呼び出し

上記のコントローラは、次のようにURIで呼び出すことができます-

http://www.your-domain.com/index.php/test

上記のURIのindex.phpの後の単語「 test 」に注意してください。 これは、コントローラーのクラス名を示します。 コントローラの名前「 Test 」を指定したので、index.phpの後に「 test 」を記述します。 クラス名は*大文字*で始まる必要がありますが、URIでそのコントローラーを呼び出すときは*小文字*と書く必要があります。 コントローラを呼び出すための一般的な構文は次のとおりです-

http://www.your-domain.com/index.php/controller/method-name

コンストラクターメソッドの作成と呼び出し

上記のクラスを変更して、「hello」という名前の別のメソッドを作成しましょう。

<?php
   class Test extends CI_Controller {

      public function index() {
         echo "This is default function.";
      }

      public function hello() {
         echo "This is hello function.";
      }
   }
?>

私たちは次の3つの方法で上記のコントローラを実行することができます-

ブラウザーで最初のURIにアクセスすると、次の図に示すような出力が得られます。 ご覧のとおり、メソッドの名前にURIを渡さなかった場合でも、メソッド「 index 」の出力が得られました。 URIにはコントローラー名のみを使用しました。 このような状況では、CodeIgniterはデフォルトのメソッド「 index 」を呼び出します。

インデックス出力

ブラウザの2番目のURIにアクセスすると、上の図に示されているものと同じ出力が得られます。 ここでは、URIでコントローラーの名前の後にメソッドの名前を渡しました。 メソッドの名前は「 index 」なので、同じ出力が得られます。

ブラウザの3番目のURIにアクセスすると、下の図に示す出力が得られます。 ご覧のとおり、URIのコントローラー名「 test 」の後に「 hello 」をメソッド名として渡したため、メソッド「 hello 」の出力を取得しています。

こんにちは出力

覚えておくべきポイント

  • コントローラークラスの名前は大文字で始める必要があります。
  • コントローラーは小文字で呼び出す必要があります。
  • 親クラスの機能をオーバーライドするため、親クラスと同じ名前のメソッドを使用しないでください。

ビュー

これは、コントローラーで呼び出すことができる単純なWebページでも複雑なWebページでもかまいません。 Webページには、ヘッダー、フッター、サイドバーなどが含まれる場合があります。 ビューを直接呼び出すことはできません。 簡単なビューを作成しましょう。 「 test.php 」という名前で application/views の下に新しいファイルを作成し、そのファイルに以下のコードをコピーします。

<!DOCTYPE html>
<html lang = "en">

   <head>
      <meta charset = "utf-8">
      <title>CodeIgniter View Example</title>
   </head>

   <body>
      CodeIgniter View Example
   </body>

</html>

以下に示すように、 application/controllers/test.php ファイルのコードを変更します。

ビューをロードする

ビューは、次の構文によってロードすることができます-

$this->load->view('name');

nameは、レンダリングされるビューファイルです。 あなたがいくつかのディレクトリにビューファイルを保存することを計画している場合は、次の構文を使用することができます-

$this->load->view('directory-name/name');

php以外を使用しない限り、拡張子をphpとして指定する必要はありません。.

  • application/views/test.php* の下の「 *test.php* 」ファイルにhtmlコーディングを保存しているため、index()メソッドはviewメソッドを呼び出し、view()メソッドに引数として「test」を渡します。
<?php
   class Test extends CI_Controller {

      public function index() {
         $this->load->view('test');
      }
   }
?>

ここに上記のコードの出力があります-

テスト出力

次のフローチャートは、すべてがどのように機能するかを示しています-

フローチャート

モデル

モデルクラスは、データベース内の情報を操作するように設計されています。 例として、CodeIgniterを使用してアプリケーション内のユーザーを管理している場合、ユーザーのデータを挿入、削除、更新、取得する関数を含むモデルクラスが必要です。

モデルクラスの作成

モデルクラスは application/models ディレクトリに保存されます。 次のコードは、CodeIgniterでモデルクラスを作成する方法を示しています。

<?php
   Class Model_name extends CI_Model {

      Public function __construct() {
         parent::__construct();
      }
   }
?>

Model_nameは、指定するモデルクラスの名前です。 各モデルクラスは、CodeIgniterのCI_Modelクラスを継承する必要があります。 モデルクラスの最初の文字は大文字でなければなりません。 以下は、ユーザーのモデルクラスのコードです。

<?php
   Class User_model extends CI_Model {

      Public function __construct() {
         parent::__construct();
      }

   }
?>

上記のモデルクラスは、User_model.phpとして保存する必要があります。 クラス名とファイル名は同じでなければなりません。

ローディングモデル

モデルはコントローラーで呼び出すことができます。 次のコードを使用して、任意のモデルをロードできます。

$this->load->model('model_name');

model_nameは、ロードするモデルの名前です。 モデルをロードした後、次のようにメソッドを呼び出すだけです。

$this->model_name->method();

モデルの自動読み込み

アプリケーション全体で何らかのモデルクラスが必要な場合があります。 このような状況では、自動ロードする方が良いでしょう。

/*
| ---------------------------------------------------------------
|  Auto-Load Models
| ---------------------------------------------------------------
| Prototype:
|
|   $autoload['model'] = array('first_model', 'second_model');
|
| You can also supply an alternative model name to be assigned
| in the controller:
|
|   $autoload['model'] = array('first_model' => 'first');
*/
$autoload['model'] = array();

上の図に示すように、自動ロードするモデルの名前を配列に渡すと、システムが初期化状態にあり、アプリケーション全体からアクセスできる状態で、自動ロードされます。

ヘルパー

名前が示すように、システムの構築に役立ちます。 さまざまな機能を提供するために、小さな機能に分割されています。 CodeIgniterには、以下の表にリストされているヘルパーがいくつかあります。 独自のヘルパーも作成できます。

通常、ヘルパーは system/helpers または* application/helpersディレクトリ*に保存されます。 カスタムヘルパーは application/helpers ディレクトリに保存され、システムのヘルパーは system/helpers ディレクトリに保存されます。 CodeIgniterは最初に* application/helpersディレクトリ*を探します。 ディレクトリが存在しない場合、または指定されたヘルパーが見つからない場合、CodeIgniterは代わりにグローバル* system/helpers/ディレクトリ*を検索します。 カスタムヘルパーかシステムヘルパーかに関係なく、各ヘルパーを使用する前にロードする必要があります。

以下に、最も一般的に使用されるヘルパーを示します。

S.N. Helper Name & Description
1

Array Helper

配列ヘルパーファイルには、配列の操作を支援する関数が含まれています。

2

CAPTCHA Helper

CAPTCHAヘルパーファイルには、CAPTCHAイメージの作成を支援する関数が含まれています。

3

Cookie Helper

Cookie Helperファイルには、Cookieの操作を支援する関数が含まれています。

4

Date Helper

日付ヘルパーファイルには、日付の操作に役立つ関数が含まれています。

5

Directory Helper

ディレクトリヘルパーファイルには、ディレクトリの操作を支援する関数が含まれています。

6

Download Helper

ダウンロードヘルパーを使用すると、データをデスクトップにダウンロードできます。

7

Email Helper

電子メールヘルパーは、電子メールを操作するためのいくつかの支援機能を提供します。 より堅牢なメールソリューションについては、CodeIgniterのメールクラスをご覧ください。

8

File Helper

ファイルヘルパーファイルには、ファイルの操作を支援する関数が含まれています。

9

Form Helper

フォームヘルパーファイルには、フォームの操作を支援する関数が含まれています。

10

HTML Helper

HTMLヘルパーファイルには、HTMLの操作を支援する関数が含まれています。

11

Inflector Helper

Inflector Helperファイルには、単語を複数形、単数形、キャメルケースなどに変更できる関数が含まれています。

12

Language Helper

言語ヘルパーファイルには、言語ファイルの操作を支援する関数が含まれています。

13

Number Helper

数値ヘルパーファイルには、数値データの操作に役立つ関数が含まれています。

14

Path Helper

パスヘルパーファイルには、サーバー上のファイルパスを操作できる関数が含まれています。

15

Security Helper

セキュリティヘルパーファイルには、セキュリティ関連の機能が含まれています。

16

Smiley Helper

スマイリーヘルパーファイルには、スマイリー(絵文字)を管理できる関数が含まれています。

17

String Helper

文字列ヘルパーファイルには、文字列の操作を支援する関数が含まれています。

18

Text Helper

テキストヘルパーファイルには、テキストの操作を支援する関数が含まれています。

19

Typography Helper

Typography Helperファイルには、意味的に関連する方法でテキストをフォーマットするのに役立つ関数が含まれています。

20

URL Helper

URLヘルパーファイルには、URLの操作を支援する関数が含まれています。

21

XML Helper

XMLヘルパーファイルには、XMLデータの操作を支援する関数が含まれています。

ヘルパーをロードする

ヘルパーは以下に示すようにロードすることができます-

$this->load->helper('name');

nameはヘルパーの名前です。 たとえば、URLヘルパーをロードする場合、次のようにロードできます-

$this->load->helper('url');

ルーティング

CodeIgniterにはユーザーフレンドリーなURIルーティングシステムがあるため、URLを簡単に再ルーティングできます。 通常、URL文字列とそれに対応するコントローラークラス/メソッドの間には1対1の関係があります。 URIのセグメントは通常このパターンに従います-

your-domain.com/class/method/id/
  • *最初のセグメント*は、呼び出す必要のあるコントローラクラスを表します。
  • * 2番目のセグメント*は、呼び出す必要のあるクラス関数またはメソッドを表します。
  • * 3番目*および追加のセグメントは、コントローラーに渡されるIDおよび変数を表します。

状況によっては、このデフォルトのルーティングメカニズムを変更する必要がある場合があります。 CodeIgniterは、独自のルーティングルールを設定できる機能を提供します。

ルーティングルールのカスタマイズ

これらすべてを処理できる特定のファイルがあります。 ファイルはapplication/config/routes.phpにあります。 ルーティングルールをカスタマイズできる$ routeという配列があります。 $ route配列のキーがルーティングするものを決定し、値がルーティングする場所を決定します。 CodeIgniterには3つの予約されたルートがあります。

S.N. Reserved Routes & Description
1

$route['default_controller']

このルートは、URIにデータが含まれていない場合にユーザーがルートURLをロードする場合に、どのコントローラークラスをロードするかを示します。 デフォルトルートを使用することをお勧めします。そうしないと、デフォルトで404ページが表示されます。 ここでウェブサイトのホームページを設定して、デフォルトでロードされるようにすることができます。

2

$route['404_override']

このルートは、要求されたコントローラーが見つからない場合にどのコントローラークラスをロードする必要があるかを示します。 デフォルトの404エラーページを上書きします。 * show_404()関数には影響しません。この関数は、 *_ application/views/errors/error_404.php_ にあるデフォルトの error_404.php ファイルのロードを継続します。

3

$route['translate_uri_dashes']

ブール値から明らかなように、これは正確なルートではありません。 このオプションを使用すると、コントローラーおよびメソッドURIセグメント内のダッシュ(「-」)を自動的にアンダースコアに置き換えることができるため、必要に応じて追加のルートエントリを節約できます。 ダッシュは有効なクラスまたはメソッド名の文字ではなく、使用しようとすると致命的なエラーが発生するため、これが必要です。

ルートは*ワイルドカード*または*正規表現*を使用してカスタマイズできますが、これらのカスタマイズされたルーティングルールは予約済みルールの後に来る必要があることに注意してください。

ワイルドカード

以下に説明するように、2つのワイルドカード文字を使用できます-

  • (:num)-数字のみを含むセグメントに一致します。
  • (:any)-任意の文字を含むセグメントに一致します。

$route['product/:num']='catalog/product_lookup';

上記の例では、URLの最初のセグメントにリテラル単語「product」が見つかり、2番目のセグメントに数字が見つかった場合、代わりに「catalog」クラスと「product_lookup」メソッドが使用されます。

正規表現

ワイルドカードのように、 $ route array key 部分で正規表現を使用することもできます。 URIが正規表現と一致する場合、$ route配列に設定された値部分にルーティングされます。

$route['products/([a-z]+)/(\d+)']='$1/id_$2';

上記の例では、代わりにproducts/shoes/123に似たURIが「 shoes 」コントローラークラスと「 id_123 」メソッドを呼び出します。