CodeIgniter-基本概念
コントローラー
コントローラは単純なクラスファイルです。名前が示すように、URIによってアプリケーション全体を制御します。
コントローラの作成
まず、 application/controllersフォルダ。そこに2つのファイルがあります。index.html そして Welcome.php。これらのファイルはCodeIgniterに付属しています。
これらのファイルはそのままにしてください。「」という名前の同じパスの下に新しいファイルを作成します。Test.php」。そのファイルに次のコードを記述します-
<?php
class Test extends CI_Controller {
public function index() {
echo "Hello World!";
}
}
?>
ザ・ Test classは、と呼ばれる組み込みクラスを拡張します CI_Controller。独自のControllerクラスを作成する場合は、このクラスを拡張する必要があります。
コントローラーの呼び出し
上記のコントローラーは、次のようにURIで呼び出すことができます。
http://www.your-domain.com/index.php/test
「test上記のURIのindex.phpの後の」。コントローラのクラス名を示します。コントローラの名前を付けたので「Test」、私たちは「testindex.phpの後に」。クラス名はで始まる必要がありますuppercase letter しかし、私たちは書く必要があります lowercase letterそのコントローラーを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つの方法で実行できます。
- http://www.your-domain.com/index.php/test
- http://www.your-domain.com/index.php/test/index
- http://www.your-domain.com/index.php/test/hello
ブラウザで最初のURIにアクセスすると、次の図に示すような出力が得られます。ご覧のとおり、メソッド「」の出力が得られました。index」、メソッドの名前をURIに渡さなかったとしても。URIではコントローラー名のみを使用しました。このような状況では、CodeIgniterはデフォルトのメソッドを呼び出します。index」。
ブラウザで2番目のURIにアクセスすると、上の図に示すのと同じ出力が得られます。ここでは、URIでコントローラーの名前の後にメソッドの名前を渡しました。メソッドの名前は「index」、同じ出力が得られます。
ブラウザで3番目のURIにアクセスすると、次の図に示すような出力が得られます。ご覧のとおり、メソッド「」の出力を取得しています。hello」を通過したためhello」をメソッド名として、コントローラーの名前の後に「testURIの「」。
覚えておくべきポイント
コントローラクラスの名前は大文字で始める必要があります。
コントローラは小文字で呼び出す必要があります。
親クラスの機能を上書きするため、親クラスと同じ名前のメソッドを使用しないでください。
ビュー
これは、コントローラーから呼び出すことができる単純なWebページまたは複雑なWebページにすることができます。Webページには、ヘッダー、フッター、サイドバーなどが含まれている場合があります。ビューを直接呼び出すことはできません。簡単なビューを作成しましょう。下に新しいファイルを作成しますapplication/views 「」という名前でtest.php」と入力し、そのファイルに以下のコードをコピーします。
<!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として指定する必要はありません。
index()メソッドはviewメソッドを呼び出し、htmlコーディングを「」に格納しているため、「test」を引数としてview()メソッドに渡します。test.php」の下のファイル application/views/test.php。
<?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 directory。カスタムヘルパーはに保存されますapplication/helpers ディレクトリとシステムのヘルパーはに保存されます system/helpersディレクトリ。CodeIgniterはあなたの中で最初に見えますapplication/helpers directory。ディレクトリが存在しないか、指定されたヘルパーが見つからない場合、CodeIgniterは代わりにグローバルを調べますsystem/helpers/ directory。カスタムヘルパーであろうとシステムヘルパーであろうと、各ヘルパーは使用する前にロードする必要があります。
SN | ヘルパーの名前と説明 |
---|---|
1 | Array Helper 配列ヘルパーファイルには、配列の操作を支援する関数が含まれています。 |
2 | CAPTCHA Helper CAPTCHAヘルパーファイルには、CAPTCHAイメージの作成を支援する関数が含まれています。 |
3 | Cookie Helper Cookie Helperファイルには、Cookieの操作を支援する関数が含まれています。 |
4 | Date Helper 日付ヘルパーファイルには、日付の操作に役立つ関数が含まれています。 |
5 | Directory Helper 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 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/
ザ・ first segment 呼び出す必要のあるコントローラークラスを表します。
ザ・ second segment 呼び出す必要のあるクラス関数またはメソッドを表します。
ザ・ third、および追加のセグメントは、コントローラーに渡されるIDと変数を表します。
状況によっては、このデフォルトのルーティングメカニズムを変更したい場合があります。CodeIgniterは、独自のルーティングルールを設定できる機能を提供します。
ルーティングルールをカスタマイズする
これらすべてを処理できる特定のファイルがあります。このファイルはapplication / config /routes.phpにあります。ルーティングルールをカスタマイズできる$ routeという配列があります。$ route配列のキーによって何をルーティングするかが決まり、値によってどこにルーティングするかが決まります。CodeIgniterには3つの予約済みルートがあります。
SN | 予約済みのルートと説明 |
---|---|
1 | $route['default_controller'] このルートは、URIにデータが含まれていない場合に、どのコントローラークラスをロードする必要があるかを示します。これは、ユーザーがルートURLをロードする場合に当てはまります。デフォルトルートを使用することをお勧めします。そうしないと、デフォルトで404ページが表示されます。ここでウェブサイトのホームページを設定できるので、デフォルトで読み込まれます。 |
2 | $route['404_override'] このルートは、要求されたコントローラーが見つからない場合にロードする必要があるコントローラークラスを示します。デフォルトの404エラーページを上書きします。影響はありませんshow_404() デフォルトのロードを継続する関数 error_404.php ファイルに application/views/errors/error_404.php。 |
3 | $route['translate_uri_dashes'] ブール値から明らかなように、これは正確にはルートではありません。このオプションを使用すると、コントローラーおよびメソッドのURIセグメントでダッシュ(「-」)をアンダースコアに自動的に置き換えることができるため、必要に応じて追加のルートエントリを節約できます。ダッシュは有効なクラスまたはメソッド名の文字ではなく、使用しようとすると致命的なエラーが発生するため、これが必要です。 |
ルートは次の方法でカスタマイズできます wildcards またはを使用して regular expressions ただし、ルーティング用にカスタマイズされたこれらのルールは、予約されたルールの後に来る必要があることに注意してください。
ワイルドカード
以下で説明するように、2つのワイルドカード文字を使用できます-
(:num) −数字のみを含むセグメントに一致します。
(:any) −任意の文字を含むセグメントに一致します。
Example
$route['product/:num']='catalog/product_lookup';
上記の例では、URLの最初のセグメントにリテラル単語「product」があり、2番目のセグメントに数字がある場合、代わりに「catalog」クラスと「product_lookup」メソッドが使用されます。
正規表現
ワイルドカードと同様に、で正規表現を使用することもできます $route array key部。いずれかのURIが正規表現と一致する場合、$ route配列に設定された値の部分にルーティングされます。
Example
$route['products/([a-z]+)/(\d+)']='$1/id_$2';
上記の例では、products / shoes / 123に似たURIは代わりに「shoes」コントローラークラスと「id_123" 方法。