ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
本稿は PHP の関数に関する記事です。関数とは、処理のまとまりに名前を付けて再利用できるようにしたブロックのことです。引数を受け取り、戻り値を返すことができます。
関数定義の基本
|
<?php |
関数定義の文法要素
| 要素 | 役割 |
|---|---|
function 名(...) | 関数を宣言 |
| 引数 | 関数に渡す値 (型宣言・既定値が可能) |
return | 戻り値を返す。書かなければ null |
| 戻り値型 | : int、: ?string 等で宣言 |
| スコープ | 関数内は独自のローカルスコープ |
型宣言 (PHP 7+)
|
function greet(string $name, int $times = 1): string { |
引数の主な機能
| 機能 | 例 |
|---|---|
| 既定値 | function f($x = 10) { ... } |
| 型宣言 | function f(int $x): int { ... } |
| nullable 型 | function f(?string $x) { ... } |
| 参照渡し | function f(&$x) { $x = 1; } |
| 可変長引数 | function f(...$args) { ... } |
| 名前付き引数 (PHP 8+) | f(name: "Taro", age: 20) |
| Union 型 (PHP 8+) | function f(int|string $x) { ... } |
| readonly プロパティ (PHP 8.1+) | コンストラクタで初期化のみ可 |
関数の種類
| 種類 | 説明 |
|---|---|
| ユーザ定義関数 | 自分で書く関数 |
| 組み込み関数 | PHP 標準 (strlen、array_map 等) |
| 無名関数 (クロージャ) | $f = function($x) { return $x * 2; }; |
| アロー関数 (PHP 7.4+) | $f = fn($x) => $x * 2; |
| メソッド | クラス内に定義する関数 |
| 静的メソッド | ClassName::method() で呼ぶ |
無名関数とアロー関数
|
// 無名関数 (use で外部変数を取り込む) |
高階関数 (関数を引数に)
|
$nums = [1, 2, 3, 4, 5]; |
スコープのルール
- 関数内で宣言した変数はローカルスコープ。関数外には影響しない
- 関数外の変数を関数内で使うには
globalや引数経由が必要 (globalはアンチパターン) - 無名関数では
useで外部変数を取り込む。アロー関数は自動でクロージャ - クラスメソッド内では
$thisが使える (静的メソッド除く)
戻り値の活用
- 早期 return でネストを浅く保つ
- 例外を投げる:
throw new InvalidArgumentException("...") - 複数値は連想配列またはクラスで返す
- PHP 8.0+ の match 式で値を返すスタイルが書きやすい
命名と設計の原則
- 動詞 + 目的語の命名:
fetchUser()、calculateTax() - 1 つの関数は1 つの責務に絞る
- 副作用 (DB 書込・ファイル書込) は関数名で明示する (
save、delete) - 引数は多くて 3〜4 個。多いなら配列やオブジェクトにまとめる
- PHP の標準ライブラリ関数名に紛れない命名を心がける
注意点
- 関数名は大文字小文字を区別しないが、定義時の表記に統一する
- 古い PHP のマジック引数 (
func_get_args) より、可変長引数 (...args) を使う - クロージャを大量に作るとメモリを食う。必要なら名前付き関数として分離
- PHP 8 では非推奨 / 削除された関数が増えている。古いコードの移行に注意
- Laravel / Symfony 等のフレームワークでは、関数よりクラスメソッドに分けるのが一般的
関連
- 親カテゴリ: 文法 (PHP)
- 関連: スーパーグローバル変数 / 内部関数
- PHP本体: PHP
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子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
- Wi-Fi とは|規格と世代(Wi-Fi 4〜7)・周波数帯・CSMA/CA・WPA3 NEW 2026-09-07 07:45:13
- set コマンドでシェルオプションと位置パラメータを操作 | bash 2026-09-07 07:45:13
- JPEG(.jpg/.jpeg)画像形式の完全ガイド — 仕様・マジックナンバー・他形式との比較・EXIF 2026-09-07 07:45:13
- UE5 Get Overlapping Actorsで特定クラスだけ処理|Class Filter・Cast To 2026-09-07 07:45:13
- Linuxで特定拡張子のファイルを再帰削除|find -deleteの安全手順 2026-09-07 07:45:13
- Django CBVでテンプレートに値を渡す|get_context_data・extra_context 2026-09-07 07:45:13
- Linuxで複数ファイルの文字列を一括置換|find・sed・xargsの安全手順 2026-09-07 07:45:13
- Laravelルートグループ|prefix・middleware・nameで一括管理 2026-09-07 07:45:13
- Linux whichコマンドの使い方|絶対パス取得とtype・command -vの違い 2026-09-07 07:45:13
- Linux catコマンドの使い方|行番号表示・複数ファイル連結 2026-09-07 07:45:13
- unable to execute 'gcc': No such file or directory 2026-09-07 07:45:13
コメントを削除してもよろしいでしょうか?