Codeigniter-basic-concepts
CodeIgniter-基本概念
コントローラー
コントローラーは単純なクラスファイルです。 名前が示すように、URIによってアプリケーション全体を制御します。
コントローラーの作成
まず、 application/controllers フォルダーに移動します。 ここには、 indexl と Welcome.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つの方法で上記のコントローラを実行することができます-
- 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にアクセスすると、次の図に示すような出力が得られます。 ご覧のとおり、メソッドの名前に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 」メソッドを呼び出します。