2024年06月14日
8.PHPファイルや関数の読み込み
ここではPHPプログラムから
方法を解説します。
phpファイルの読み込み
他のPHPファイルを読み込む関数には下記の物があります。
関数 | 解説 |
include() | 現在のディレクトリにある $file で指定したPHPファイルを読み込みます。
PHPエラーがあっても処理を継続するのが特徴です。 [パラメータ] $file (文字列)(必須)インクルードするファイル名を指定します。 |
include_once(); | 現在のディレクトリにある $file で指定したPHPファイルを1回だけ読み込みます。
既に他の場所で読み込まれていた場合は読み込みません。 |
require() |
現在のディレクトリにある $file で指定したPHPファイルを読み込みます。
エラーがあった場合は、PHPの処理を中断するのが特徴です。 |
require_once() | 現在のディレクトリにある $file で指定したPHPファイルを1回だけ読み込みます。
既に他の場所で読み込まれていた場合は読み込みません。 |
[プログラム事例]
[testフォルダ]の下にファイル名[sub.php]を作成し、下記のプログラムを記述します。
<?php echo '子の中でecho='.$data.'<br>'; // 親の変数$dataをエコーします。 $data = '20'; // $dataの値を更新しています。 ?>
上記のphpファイルを読み込むプログラム
<?php $data = '10'; // $dataに値をセットしています。 echo 'インクルード前='.$data.'<br>'; include('test/sub.php'); // [sub.php]をインクルードします。 echo 'インクルード後=' . $data.'<br>';// [sub.php]で変更した$dataをエコーします。 ?>
■上記の実行結果は下記になります。PHPファイルのインクルード後に値が変わっています。
インクルード前=10
子の中でecho=10
インクルード後=20
include()、require()の変数の引き渡し
上記の関数で読み込んだ場合、一つのプログラムの様に動くので親と子の間で変数を引き渡す必要はありません。
一方、WordPressの get_template_part() もPHPファイルを読み込む関数ですが、この関数の場合は完全に別空間で動く為、親子間の変数引き渡しは、グロバル変数かセッション機能(ディスク経由)を利用する必要があります。
関数の読み込みと関数CALL
WordPressで関数を作成する場合は functions.php の中に記述することになっています。
そうするとWordPress本体が functions.php を読み込んでくれるので、ユーザは下記で関数をCALLするだけです。
関数名(引数1,引数2・・)
ここでは独自関数ファイルの読み込みと、CALL方法を解説していきます。
[プログラム事例]
[testフォルダ]の下にファイル名[func.php]を作成し、下記プログラムを登録します。
<?php //********************************************** // 戻り値がない関数 //********************************************** function msg($msg='メッセージはありません'){ echo $msg.'<br>'; } //********************************************** // 戻り値が1つの関数 //********************************************** function addition($val1=0 , $val2=0){ $ans = $val1 + $val2; // 加算処理 return $ans; // 結果を戻す } //********************************************** // 戻り値が2つの関数 //********************************************** function calc($val1=0 , $val2=0){ $ans1 = $val1 + $val2; // 加算処理 $ans2 = $val1 * $val2; // 乗算 return [$ans1,$ans2]; // 結果を戻す } ?>
■2~7行目:msg()関数、戻り値がない関数です。
引数のデフォルト値は'メッセージはありません'を設定し、与えられたメッセージをechoするだけの関数です。
■8~14行目:addition()関数、戻り値が1つの関数です。
引数のデフォルト値は0とし、与えらてたデータを加算した結果を戻す関数です。
■15~22行目:calc()関数、戻り値が2つの関数です。
引数のデフォルト値は0とし、与えらてたデータの加算結果と乗算結果を配列で戻す関数です。
上記の関数を読み込むプログラム
<?php include_once('test/func.php');// [func.php]をインクルードします。 msg('関数msgをCALLしました');//戻り値がない関数CALL $ans = addition(12,8);// 戻り値が1つの関数CALL echo '関数additionの結果:'.$ans.'<br>' list($ans1,$ans2) = calc(12,8);//戻り値が2つの関数CALL echo '関数calcの結果①:'.$ans1.'<br>'; echo '関数calcの結果②:'.$ans2.'<br>'; $array = calc(12,8);// 配列での受け取り echo '関数calcの結果③:'.$array[0].'<br>'; echo '関数calcの結果④:'.$array[1].'<br>'; ?>
■2行目:関数ファイルを1回だけ読み込んでいます。
■3行目:msg()関数をCALLしています。
■5~6行目:addition()関数をcallして結果をechoしています。
■8~10行目:calc()関数をcallして結果をlist関数で受け取りechoしています。
■12~141行目:calc関数をcallして結果を配列で受け取りechoしています。
■結果は下記になります。
関数msgをCALLしました
関数additionの結果:20
関数calcの結果①:20
関数calcの結果②:96
関数calcの結果③:20
関数calcの結果④:96