ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
いちばん基本の形
<?php
// lib/functions.php
function taxIncluded(int $price, float $rate = 0.1): int
{
return (int)floor($price * (1 + $rate));
}
function e(?string $s): string
{
return htmlspecialchars((string)$s, ENT_QUOTES, 'UTF-8');
}
<?php
// index.php
require_once __DIR__ . '/lib/functions.php';
echo taxIncluded(1000); // 1100
echo e('<script>'); // <script>
読み込んだ関数はグローバルに登録されるので、以降どこからでも呼べます。読み込む前に呼ぶと Error: Call to undefined function になります。
4 つの読み込み文の違い
| ファイルが無いとき | 2 回目以降 | |
|---|---|---|
require | Fatal error で停止 | もう一度読み込む |
require_once | Fatal error で停止 | 読み込まない |
include | Warning を出して続行 | もう一度読み込む |
include_once | Warning を出して続行 | 読み込まない |
関数定義を含むファイルは require_once を使います。require だと 2 回読み込まれたときに次のエラーになります。
Fatal error: Cannot redeclare taxIncluded() (previously declared in /lib/functions.php:4)
「無くても動く」テンプレート部品なら include、「無ければ成立しない」定義なら require、と使い分けます。
パスの書き方
require_once __DIR__ . '/lib/functions.php'; // 推奨
require_once dirname(__DIR__) . '/lib/functions.php'; // 1 つ上の階層
require_once 'lib/functions.php'; // 非推奨: 呼び出し元の位置に依存する
require_once './lib/functions.php'; // 非推奨: カレントディレクトリに依存する
__DIR__ はそのファイル自身が置かれているディレクトリを返します。相対パスは「実行を開始したファイル」の位置や include_path の設定に左右されるため、cron から実行したときだけ読めない、といった問題を起こします。
戻り値を受け取る
<?php
// config.php
return [
'db_host' => 'localhost',
'debug' => true,
];
$config = require __DIR__ . '/config.php';
echo $config['db_host']; // localhost
読み込むファイルが return すると、その値が require の結果になります。設定ファイルはこの形にすると、グローバル変数を汚さずに済みます。Laravel の config/ 配下もこの仕組みです。
変数のスコープ
// view.php
echo $title; // 読み込んだ側の変数がそのまま見える
$title = 'ページ名';
require __DIR__ . '/view.php'; // $title が見える
function render(array $data): void
{
extract($data); // 関数の中で読み込むと
require __DIR__ . '/view.php'; // その関数のスコープになる
}
require はその場所のスコープをそのまま引き継ぎます。テンプレートを関数の中で読み込むと、渡した変数だけが見える状態を作れます。
二重定義を避ける
// 既に定義されていれば作らない(プラグインなど、読み込み順が読めない場合)
if (!function_exists('taxIncluded')) {
function taxIncluded(int $price): int { /* ... */ }
}
var_dump(function_exists('taxIncluded')); // true
ただし function_exists() で囲むのは最後の手段です。定義が 2 つ存在してどちらが使われるか分からない状態になるため、まずは require_once と読み込み位置の整理で解決してください。
名前空間の中の関数
<?php
// lib/helpers.php
namespace App\Support;
function e(?string $s): string
{
return htmlspecialchars((string)$s, ENT_QUOTES, 'UTF-8');
}
<?php
require_once __DIR__ . '/lib/helpers.php';
use function App\Support\e; // 関数を import するときは use function
echo e('<b>');
echo \App\Support\e('<b>'); // 完全修飾でも呼べる
クラスの use と違い、関数には use function と書きます。名前空間を付けておけば、同名の関数がライブラリと衝突しません。
Composer で自動読み込みする
{
"autoload": {
"psr-4": { "App\\": "src/" },
"files": ["src/helpers.php"]
}
}
composer dump-autoload
require __DIR__ . '/vendor/autoload.php'; // これ 1 行だけ書けばよい
echo taxIncluded(1000); // helpers.php の関数がもう使える
クラスは PSR-4 で必要になった時点で自動的に読み込まれますが、関数はその仕組みの対象外です。関数を自動で使えるようにする方法は autoload.files しかありません。ここに登録したファイルは毎リクエスト必ず読み込まれるので、重い処理を書かないでください。
関数ファイルを分けるときの指針
- 1 ファイルにまとめすぎない。用途ごとに分ける(
string.phpdate.phpなど) - ファイルの先頭以外に
echoや実行文を書かない。読み込んだだけで副作用が出る - 関連する関数が 3 つ以上になったらクラスにまとめることを検討する(オートロードが効く)
- 汎用の名前(
format()get())は避ける。名前空間を付けるか接頭辞を付ける
関連
- 関数 — 親カテゴリ
- 関数の定義と呼び出し方法
- 外部ファイルを呼び出す方法 — 読み込み構文の全体像
- Composerのインストール
- スコープ
- クラスの再読み込み
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
- 関数の定義と呼び出し方法
- 他ファイルの関数読み込み
- 可変長引数
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- 【django】ログイン 認証機能 2026-09-08 03:22:09
- MySQL ERROR 1063 Incorrect column specifier for column|原因と直し方 2026-09-08 03:11:09
- 【PHPエラー】Object of class stdClass could not be converted to string 2026-09-07 07:46:04
- Julia Genie ローカル開発サーバ起動完全ガイド 2026-09-07 07:46:04
- Spring Framework 記事一覧31件|DI・設定・例外の対処 2026-09-07 07:45:13
- Javaの定数 2026-09-07 07:45:13
- Laravel 記事一覧55件|環境構築・ルーティング・DB・エラー対処 2026-09-07 07:45:13
- hostnameコマンドの使い方|Windows・Linux・macOSでホスト名確認 2026-09-07 07:45:13
- SQLとは|DDL・DMLとリレーショナルデータベース操作の基本 2026-09-07 07:45:13
- Oracle DROP USERでユーザー削除|CASCADE・接続中ユーザーの対処 2026-09-07 07:45:13
- Linux whichコマンドの使い方|絶対パス取得とtype・command -vの違い 2026-09-07 07:45:13
- JPEG(.jpg/.jpeg)画像形式の完全ガイド — 仕様・マジックナンバー・他形式との比較・EXIF 2026-09-07 07:45:13
- Laravelルートグループ|prefix・middleware・nameで一括管理 2026-09-07 07:45:13
- NetBeansでTomcatを起動する手順|サーバ登録・ポート・トラブル対処 2026-09-07 07:45:13
- Linuxで複数ファイルの文字列を一括置換|find・sed・xargsの安全手順 2026-09-07 07:45:13
コメントを削除してもよろしいでしょうか?