広告

PHPでrequireの使い方。他ファイルのプログラムを呼び出す方法

2019年10月2日

PHPで「require」を使って他ファイルからプログラムを呼び出す方法を記してます。

重複しているプログラムを共通化してrequire呼び出しGIF

補足
PHPのis_numeric変数でURLパラメーターを制限する方法を読んでおくとこの記事の理解も爆上がりです!

phpのrequire関数の使い方

PHPでは、他のphpファイルをrequire関数で呼び出すことが可能です。

require
requireは指定されたファイルを読み込み、評価します。
参考:PHP require

phpのrequire関数を利用するには、主に以下手順で行います。

  1. 重複してるプログラムを
  2. 別のPHPファイルへ書き出し
  3. requireでファイルを呼び出す

そのため先に「別のPHPファイル」となる「connect.php」を新規作成しておきます。

connect.phpを新規作成したイメージ

STEP1. requireを実行するためのphpファイルに重複プログラムをコピペ

次に以下ファイル、

  1. 入力された値をデーターベースへ登録するファイル(index.php)
  2. データーベースから値を取得して表示するファイル(request.php)

の中で重複しているプログラムを切り取って、connect.phpへ書き出します

2つのファイルの中で重複しているプログラムは、データーベースへPDO接続する箇所

connect.phpに挿入する切り取るための重複プログラム

該当するコード↓

<?
// データーベース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に貼り付けます↓

connect.phpへrequire対象のプログラムを貼り付け

STEP2. PHPファイルの重複プログラムをrequireで統一

connect.phpへ以下のように貼り付けたら、 先の2つのファイル

  1. 入力された値をデーターベースへ登録するファイル(index.php)
  2. データーベースから値を取得して表示するファイル(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のファイルが存在するとします。

1つ上の階層にphpファイルがある

/home/user/test/numeric

その場合、require関数で実行ファイルを呼び出すには、以下のように設定する必要があります。

require('../connect.php');

OYAKUN
OYAKUN
「../」で1つ上の階層のファイルを指定すればOKです!

まとめ

PHPのrequire関数を利用して、他のPHPファイルを呼び出して実行する方法でした。

実行するプログラムを1つにまとめておけるので、requireはめっちゃ便利な関数と言えるでしょう!

Excelマクロのwithステートメント、いやCallステートメントに似てるかな...にてない!

関連記事:PHPでURLパラメーターを指定して利便性をあげる方法
関連記事:PHPの$_REQUESTでMySQLから任意のデータを取得する方法
関連記事:【MySQL】PHPでデータベースを表示したHTMLにリンクも埋め込む