【php】includeで別のphpファイルを読み込んで実行する

php
書いてる人
あいりゅー

プログラミングを学びながら更新しています。
iPhone/iPad/Mac/Apple WatchなどのApple製品はこちらで主に更新しています。
麻雀の反省をひたすら掲載してるブログもやってます。

あいりゅーをフォローする

このページについて

このページではphpで使うことができるincludeの機能と解説をしています。

include

includeはphpの制御構造の1つ。この制御構造はifやwhileなど、結構な頻度で目にするものが多く分類されています。includeは指定したファイルを読み込む機能を持っています。基本的な書き方は以下の通りです。

include('ファイルパス')

ファイルパスに読み込みたいファイルを指定するわけですが、このサイトではmacOS向けの解説しか出来ないのでmacないしUnix系での書き方を解説します。

ファイルパス(相対参照)

includeで必要になるファイルパスですが、UnixやLinux系は/から始まります。WindowsとかだとC:みたいな始まり方ですが、Unix系は/から始まります。そしてmacOSもベースはUnix系なので同じように/から始まります。

例えば「現在実行しているphpファイルと同じ場所にあるファイルを読み込む」場合は

include('./B.php')

のように書きます。カレントディレクトリと言って、以下のような場合にこの書き方が使えます。

include-cd

この場合は、フォルダAの中にA.phpとB.phpの2つのファイルがあります。そしてAでincludeを使って同フォルダ内にあるBを呼び出す書き方をしました。しかしフォルダBにあるB.phpに関しては別のディレクトリとなるため、呼び出すことはできません。このように「現在のディレクトリを基準にファイルを探す」ことを相対参照(そうたいさんしょう)と言います。

ファイルパス(絶対参照)

続いては完全なアドレスを指定してファイルを特定する、絶対参照。こちらは相対参照とは違い、現在のファイルがどこで呼び出したいファイルがどこにあろうとも、関係ありません。相対参照は./のように書くことで「現在フォルダ」を表していましたが、絶対参照にはそのような便利ワードはありません。つまり完全なファイルパスを書くだけです。

includeの絶対参照

 

Aで行うincludeに注目してみると、カレントディレクトリで使っていた./ではなく普通のから始まっているのが分かります。これは上でも軽く触れましたが、Unix系のファイルパスがこのように始まるからです。WindowsだとC:などがスタートになります。

ファイルパスの注意点

ファイルパスは絶対でも相対でもどちらでも構いません。使いやすい方を使えばいいだけの話なんですが、それぞれのメリットとデメリットについても把握しておくといいかもしれません。

相対参照のメリットはなんと言っても記述のお手軽さ。./と書き始めるだけで実行中のファイルと同じフォルダ内を自動で探してくれるし、ファイルパスの書き間違いによるエラーとかそういうのも無くなります。その反面、ファイルの位置を変更したら当然読み取れなくなるのでそこだけ注意しましょう。

絶対参照のメリットは相対参照の逆で、完全なファイルパスを指定していることからリンクエラーなどにすぐ気づける点ですかね。相対はファイルを自動で探してくれますが、絶対の場合はそこに確実にファイルがある前提で呼び出しに行っているので無ければ即エラーです。

macOSでの絶対参照の書き方

macOSでの絶対参照の書き方は少し癖があるので注意しましょう。基本的には以下のように書きます。

/Users/ユーザー名/フォルダ/ファイル.php

人それぞれで保存環境などが違うとは思いますが、このように書きます。書類とかは内部的にはDocumentsになっているとか、そういうこともあるので便利な方法を紹介します。

Finderの場合はメニューバーの表示をクリックし、パスバーを表示をクリック。目的のファイルを保存しているフォルダを開き、画面下部のパスバーで右クリックし、○○のパス名をコピーをクリック。

Finderでのファイルパス取得

このようにすることで自動でフルパスを取得できます。

Path Finderを使っている方は対象のファイルを右クリックし、パスをコピー→Unixかターミナルのどちらかをクリック。UNIXでもターミナルでも取得できるパスは基本的には同じです。

Path Finderのパス取得

includeの戻り値と変数

includeには実は戻り値があります。ファイルの読み込みに成功したら1を返すようになっています。そして変数はインクルードしたファイルの物を引き継ぎます。

読み込む側のA.phpと、読み込まれる側のB.phpという2つのファイルがあり、Aの内容が以下。

include('./B.php)';
echo $b;

一方のB.phpの内容が以下。

$b=2;

結果はというと、Bの$bの内容が出力されます。Aには$bなんて変数は存在しませんが、$bが存在するB.phpをインクルードした時点でAにも$bがある扱いになっているわけです。

includeとreturn

includeとreturnの関係についても軽くおさらいしておきます。returnは「その時点で処理を終了して値を返す」という機能です。詳しくはreturnの解説ページにて書いています。そちらとは少し違った内容ですが、言いたいことは同じです。

//A.php
include('./B.php');
echo $b;

そして

//B.php
return;
$b = 2;

こうするとどうなるかというと、includeした時点でreturnを踏んでいるのでB.phpでの処理が終わり、再びA.phpに制御が戻ってきます。結果、echo $bで出力するはずの$bがAで宣言されていない扱いになるので、Warningが表示されます。

php以外の読み込み

includeはファイルなら色々なものが読み込めます。その一例です。

.txt(テキストファイル)

include-txt

なおcssファイルも普通に読み込めますが、その中身をテキストとして表示するのみとなります。画像はそもそもhtmlで読み込むタグがあるのでそちらを使うのが適切です。あくまでincludeはhtmlで読み込めない物を読み込むときに使うって認識の方がいいと思います。

まとめ

includeはphpの処理の中で別のphpファイルを読み込むときに使えます。classやfunctionなど、色々な物を引き継ぐことができるので処理を小分けにファイル化していたとしても、その都度呼び出して使うことができます。

phpの基礎
phpとは?JavaScriptとの違いは?みたいなことから、基本の書き方などを解説。
echoとprint
画面に文字を出力する2種類の言語構造の使い方
変数
phpで使える変数の扱い方などを解説しています。
変数のスコープ(有効範囲)
変数のスコープについての解説です。
var_dump
変数の情報を見ることができる関数
print_r
変数の情報をわかりやすい形式で表示する関数
配列と連想配列
配列と連想配列の書き方と、便利な関数の解説など。
key
連想配列のキーを返してくれます。内部ポインタ関係あり。
count
配列や連想配列の要素数を数えてくれる関数の使い方解説。
ソート関数
配列に対してソートを行う関数の中から、代表的な5つの使い方解説です。
array_reverse
配列の中身の順番を反転させる関数です。
array_chunk
配列を指定した数で分割させるarray_chunk関数の使い方解説です。
array_combine
2つの配列を足して1つの連想配列にする関数です。
array_diff
2つの配列を比較して、存在しない値を出力する関数
array_push
配列に対して後方に要素を追加する関数
array_unshift
配列に対して先頭に要素を追加する関数。
array_shift
配列の先頭の要素を取り出す関数。
array_merge
複数の配列を統合して1次元の配列にする関数
array_intersect
2つの配列を比較して、両方に共通するものを出力する関数
include
includeを使って別のphpファイルを読み込む方法の解説。
if文
if文を使って処理を変更させる方法の解説。
switch文
switch文を使って複数の処理分岐を行わせたい時に使います。
forループ
forループを使って同じ処理を行わせる方法の解説です。
whileループ
whileループを使って同じ処理を行わせる方法の解説と注意点。
do-whileループ
do-whileループを使って同じ処理を行わせる方法の解説です。
foreachループ
foreachループを使って配列内のアイテム全てに処理を行う方法の解説です。
continue
ループ処理の残りをスキップしつつ、ループの先頭に戻る制御構造
ループのネスト構造(入れ子)
ループの中にループを入れる書き方や考え方の解説。
function
functionを使って自作の関数を作成・使用する方法の解説。
引数の種類と書き方解説
functionで扱う引数の種類と書き方を解説
return
returnの使い方と関数での使い方解説。
class
classを作成して変数と関数を1つにまとめる方法と使い方の解説。
constructとdestruct
classのインスタンス作成と同時に処理を行うconstructと、スクリプトの終了と同時に実行するdestructの解説です。
インターフェイス
インターフェイスという用語の解説と、実際の使い方解説
トレイト
コードを再利用するのに便利なトレイトの解説です。
列挙型
プログラム中で使う変数名をあらかじめ定義しておく。そんな感じの型。
PDOを使ってMySQLへ接続
PDOを使ってMySQLへ接続し、データを取得する方法の解説です。
データの加工と表示
PDOでデータベースから取得したデータを加工して表示する方法の解説です。
HTMLフォームのデータ受け取りと表示
HTMLで作ったフォームからのデータの受け取り方法と、その表示方法の解説です。
タイトルとURLをコピーしました