CodeIgniter入門!コントローラにパラメータを渡す方法を徹底解説
生徒
「CodeIgniterを使っているのですが、URLから特定のデータを受け取って画面に表示させるにはどうすればいいですか?」
先生
「それは『パラメータを渡す』という操作が必要ですね。URLの構成を工夫するだけで、コントローラに情報を送ることができるんですよ。」
生徒
「URLの数字や文字をプログラムで読み取るということですか?難しそうですね…。」
先生
「実はとてもシンプルです!まずは基本の仕組みから、プログラミングが初めての方にもわかりやすく解説していきますね。」
1. コントローラとパラメータの基本知識
PHPの人気フレームワークであるCodeIgniter(コードイグナイター)を学ぶ上で、避けて通れないのが「コントローラ」の役割です。コントローラとは、いわば「司令塔」のような存在です。ユーザーがウェブサイトの特定のページにアクセスしたとき、どの処理を行って、どの画面を表示させるかを決定します。
ここで言うパラメータ(引数)とは、コントローラに渡す「追加の情報」のことです。例えば、ブログサイトで「3番目の記事を表示したい」というとき、この「3」という数字がパラメータにあたります。これを使うことで、同じデザインのページでありながら、中身だけを動的に切り替えることができるようになります。
パソコンを触ったことがない方のために例えると、コントローラは「自動販売機」、パラメータは「投入するお金やボタンの番号」です。同じ自動販売機でも、押すボタンという情報を変えることで、出てくる飲み物が変わりますよね。プログラミングもそれと同じ考え方なのです。
2. URLの仕組みと値の受け渡し
CodeIgniterでは、URLの形が非常にきれいに整理されています。一般的なWebサイトのURLは複雑に見えますが、CodeIgniterでは以下のようなルールで構成されています。
http://example.com/クラス名/メソッド名/パラメータ1/パラメータ2
このURLの後半部分にある「パラメータ」の部分に書いた文字や数字が、自動的にコントローラのプログラムの中へ送り届けられます。これをセグメントと呼ぶこともあります。特別な設定をしなくても、URLの区切り(スラッシュ)を利用して情報を渡せるのがCodeIgniterの便利な点です。SEO対策としても、URLが意味のある単語で構成されることは非常に有利に働きます。
3. 最もシンプルなパラメータの受け取り方
それでは、実際にコードを書いてみましょう。まずは、名前を受け取って挨拶を表示するシンプルなプログラムを作ります。コントローラのメソッド名の後ろにあるカッコ () の中に、変数名($から始まる名前)を書くだけで、URLからの情報を受け取ることができます。
メソッドとは、コントローラの中に書く「一連の命令の塊」のことです。ここでは greet という名前のメソッドを作ってみます。
<?php
namespace App\Controllers;
class User extends BaseController
{
// URLの例: http://localhost:8080/user/greet/suzuki
public function greet($name)
{
echo "こんにちは、" . $name . "さん!";
}
}
実行結果は以下のようになります。
こんにちは、suzukiさん!
このプログラムでは、URLの末尾にある suzuki という文字が、自動的に変数 $name に代入されます。これにより、URLを変えるだけで表示される名前を自由に変えることができるのです。
4. 複数のパラメータを同時に渡す方法
パラメータは1つだけではなく、2つ、3つと増やすことも可能です。その場合は、カンマ , で区切って記述します。例えば、商品カテゴリーと商品IDを同時に渡すようなケースを考えてみましょう。
複数の情報を扱うとき、プログラミングでは順番がとても重要になります。URLに書いた順番通りに、プログラム側の変数にも値が入っていきます。この仕組みを理解すると、より複雑なWebアプリケーション開発が可能になります。
<?php
namespace App\Controllers;
class Shop extends BaseController
{
// URLの例: http://localhost:8080/shop/item/fruit/150
public function item($category, $id)
{
echo "カテゴリー:" . $category . "<br>";
echo "商品番号:" . $id;
}
}
実行結果は以下のようになります。
カテゴリー:fruit
商品番号:150
このように、URLの fruit が $category に、150 が $id にそれぞれ対応して渡されます。初心者の方は、まずこの「順番通りに届く」というルールをしっかり覚えましょう。
5. パラメータがない場合の「デフォルト値」設定
もしユーザーがURLにパラメータを入れ忘れてアクセスしてしまったらどうなるでしょうか?通常、プログラムは「情報が足りない!」と怒ってエラーを出してしまいます。これを防ぐために、あらかじめ決めておいた値(デフォルト値)を設定しておくテクニックがあります。
変数の後ろに = を使って値を書いておくと、URLに何も入力されなかったときにその値が使われます。これを初期値とも呼びます。
<?php
namespace App\Controllers;
class Blog extends BaseController
{
// パラメータがない場合は「1」ページ目とする設定
public function index($page = 1)
{
echo "現在は " . $page . " ページ目を表示しています。";
}
}
URLが /blog/index の場合(パラメータなし)の実行結果:
現在は 1 ページ目を表示しています。
URLが /blog/index/5 の場合の実行結果:
現在は 5 ページ目を表示しています。
このように設定しておけば、エラーを防ぎつつ柔軟なページ作成ができるようになります。親切な設計ですね。
6. 数値計算にパラメータを利用する
受け取ったパラメータは、ただ表示するだけでなく、計算に使うこともできます。例えば、2つの数字をURLから受け取って、その合計を計算するプログラムを作ってみましょう。プログラミングにおいて、足し算や引き算などの計算を行うことは基本中の基本です。
ここでは、$num1 と $num2 という2つの箱を用意して、その中身を足し合わせます。これにより、動的な計算ツールのような機能を作ることができます。
<?php
namespace App\Controllers;
class Calc extends BaseController
{
// URLの例: http://localhost:8080/calc/add/10/20
public function add($num1, $num2)
{
$sum = $num1 + $num2;
echo "計算結果は " . $sum . " です。";
}
}
実行結果は以下のようになります。
計算結果は 30 です。
URLの数字を変えるだけで、結果が即座に変わる様子を確認できるはずです。これが動的コンテンツの面白いところです。
7. パラメータを受け取るときの注意点と型
初心者の方が最後におさえておくべきなのは、セキュリティと「データの種類(型)」の話です。URLから送られてくるデータは、悪意のあるユーザーによって書き換えられる可能性があります。例えば、数字を期待している場所に文字が入力されたり、おかしな記号を入れられたりすることです。
本格的な開発では、受け取った値が本当に正しい形式かどうかを確認する「バリデーション」という作業が必要になりますが、まずは「URLから自由に値を操作できる」という利便性とリスクの裏表を意識しておきましょう。また、PHPは柔軟な言語なので、URLの 123 という文字も、計算の時には自動的に数字として扱ってくれますが、明示的に「これは数字ですよ」と指定する方法もあります。
こうした細かい制御ができるようになると、初心者から一歩進んだバックエンドエンジニアへの道が開けます。まずは今回紹介した方法で、自由にURLとプログラムを連携させて遊んでみてください。自分で書いたコードが、URLの入力一つで反応を変える楽しさを体験することが、上達への一番の近道です。