PHPで「require」を使って他ファイルからプログラムを呼び出す方法を記してます。
phpのrequire関数の使い方
PHPでは、他のphpファイルをrequire関数で呼び出すことが可能です。
require
requireは指定されたファイルを読み込み、評価します。
参考:PHP require
phpのrequire関数を利用するには、主に以下手順で行います。
- 重複してるプログラムを
- 別のPHPファイルへ書き出し
- requireでファイルを呼び出す
そのため先に「別のPHPファイル」となる「connect.php」を新規作成しておきます。
STEP1. requireを実行するためのphpファイルに重複プログラムをコピペ
次に以下ファイル、
- 入力された値をデーターベースへ登録するファイル(index.php)
- データーベースから値を取得して表示するファイル(request.php)
の中で重複しているプログラムを切り取って、connect.phpへ書き出します。
2つのファイルの中で重複しているプログラムは、データーベースへPDO接続する箇所↓
該当するコード↓
<?
// データーベースtestへ接続
try {
$db = new PDO('mysql:dbname=test;host=localhost;charset=utf8','root','root');
// 入力した値をデータベースへ登録
$count = $db->exec('INSERT INTO 部品登録 SET 部品名="'. $_POST['buhin'] .'",登録日 = NOW()');
// 登録した件数を表示
echo $count . "件のデータを登録しました!";
} catch (PDOException $e) {
// 接続できなかったらエラー表示
echo 'DB接続エラー!: ' . $e->getMessage();
}
?>
そして、切り取ったプログラムを新規作成したconnect.phpに貼り付けます↓
STEP2. PHPファイルの重複プログラムをrequireで統一
connect.phpへ以下のように貼り付けたら、 先の2つのファイル
- 入力された値をデーターベースへ登録するファイル(index.php)
- データーベースから値を取得して表示するファイル(request.php)
にconnect.phpを呼び出すrequire関数を書きます。
具体的には、index.phpとrequest.phpから「connect.php」へ転記したプログラムがあった箇所に、
require('connect.php');
と記入します。
index.phpに書いたrequireのサンプル
index.phpに記入したコードのサンプルです↓
<main>
<h2>登録した部品名一覧</h2>
<!--?php
//requireで重複プログラムを他ファイルから呼び出し
require('connect.php');
// 部品登録テーブルの部品名の値を降順に取得して$entryに格納
$entry = $db->query('SELECT * FROM 部品登録 ORDER BY 部品名 DESC');
?-->
<article><!--?php while($resister = $entry->fetch()): ?--><!-- $entryの値をfetchで1件ずつ取得して$resistorへ格納 --> <!--?php print(mb_substr($resister['部品名'],0,50)); ?--> <time><!--?php print($resister['登録日']); ?--></time>
<hr align="left" size="3" width="450" /><!--?php endwhile; ?--></article>
</main>
request.phpにrequireを書き込んだサンプル
request.phpに記入したコードのサンプルです↓
<main>
<h2>登録した部品名の詳細画面</h2>
<!--?php
//requireで重複プログラムを他ファイルから呼び出し
require('connect.php');
//is_numericで入力値が数値以外だったらエラー処理
$id = $_REQUEST['id'];
if(!is_numeric($id) || $id <= 0) {
print('入力する値を1以上の数字にしてね!');
exit();
}
//安全に処理するためにprepareとREQUEST変数で処理する
$Data = $db->prepare('SELECT * FROM 部品登録 WHERE id=?');
$Data->execute(array($id));
$hyouji = $Data->fetch();
?-->
<article>
<pre> </pre>
<a href="index.php">一覧画面へ戻る</a></article>
</main>
PHPでrequireを使った動作確認
入力フォーム開き適当な値を入力して登録
登録された画面が開きました。
テキストリンクをクリックすれば、詳細画面も確認することができます。
phpMyAdminからデータベースの中も覗いてみると、きちんと登録されていることが分かりますね。
requireでデーターベースへ登録するプログラムを共通化しても、きちんと処理がなされていることが確認できました!
require関数で他のファイルを読み込むときの注意点
require関数で他ファイルのプログラムを読み込むときは、対象のファイルが存在するディレクトリを指定する必要があります。
同じ階層に対象ファイルがある場合
同じフォルダの中に呼び出す対象のファイルがある場合、require実行パスの書き方はさきほどと同じ書き方でOK↓
require('connect.php');
1つ上の階層に対象ファイルがある場合
1つ上の階層に対象ファイルがある場合、例えば「test」フォルダにrequireのファイルが存在するとします。
/home/user/test/numeric
その場合、require関数で実行ファイルを呼び出すには、以下のように設定する必要があります。
require('../connect.php');
まとめ
PHPのrequire関数を利用して、他のPHPファイルを呼び出して実行する方法でした。
実行するプログラムを1つにまとめておけるので、requireはめっちゃ便利な関数と言えるでしょう!
Excelマクロのwithステートメント、いやCallステートメントに似てるかな...にてない!
関連記事:PHPでURLパラメーターを指定して利便性をあげる方法
関連記事:PHPの$_REQUESTでMySQLから任意のデータを取得する方法
関連記事:【MySQL】PHPでデータベースを表示したHTMLにリンクも埋め込む