前のページ

PHPのrequireとrequire_onceについて簡単なサンプルコードで解説

みなさんこんにちは、あべ いさぢです。

今回はPHPのrequireとrequire_onceについて簡単なサンプルコードで解説します。


require・require_onceとは

どちらも別のphpファイルを読み込む為の記述です。

例えば下記のフォルダ構成になっていたとします。

sample/
├── index.php
└── message.php

先にrequireで説明します。

message.phpに下記の記述をしたとします。

<?php
$message = 'こんにちは';

$messageをindex.phpで読み込んで使う為に下記の記述をします。

<?php
require 'message.php';
echo $message;

結果は下記の表示になります。

こんにちは

イメージとしてはindex.phpの「require 'message.php';」がmessage.phpの「$message = 'こんにちは';」に書き変わって下記になる感じです。

<?php
$message = 'こんにちは';
echo $message;

require_onceも同じことができます。


requireとrequire_onceの違い

require_onceはrequireと同じことができますがそれならrequireだけでいいです。

requireとrequire_onceには違いがあります。

requireは読み込みが何度もできます。

例えば$message.phpに下記の記述をしたとします。

<?php
function hello(): void
{
    echo 'こんにちは';
}

index.phpでmessage.phpを2回読み込んだとします。

<?php
require 'message.php';
require 'message.php';
hello();

これはエラーになります。

この時のindex.phpのイメージは下記になり同じ関数を2回使っていることになるからです。

<?php
function hello(): void
{
    echo 'こんにちは';
}

function hello(): void
{
    echo 'こんにちは';
}

hello();

こういう2回読み込むみたいなのを防ぐ時にrequire_onceを使います。

require_onceは下記の意味になります。

ファイルをまだ読み込んでいなければ読み込み、すでに読み込んでいれば読み込まない

だから下記の記述をすればエラーが出ません。

<?php
require_once 'message.php';
require_once 'message.php';

hello();

この時のindex.phpのイメージは下記です。

<?php
function hello(): void
{
    echo 'こんにちは';
}

hello();


戻る