PHPにおけるサブ名前空間の宣言方法
はじめに
PHPでは、名前空間(namespace)の中にさらに別の名前空間を定義することができます。ファイルシステムにおいて、あるディレクトリが階層構造でサブディレクトリを含めるのと同じように、サブ名前空間も階層的に整理することが可能です。
トップレベルの名前空間とサブ名前空間の関係は、区切り文字であるバックスラッシュ \ を使って定義します。
サブ名前空間の宣言
サブ名前空間を宣言するには、namespaceキーワードの後に「親名前空間\サブ名前空間」の形式で記述します。次の例では、トップレベルの名前空間「myspace」の中に、「space1」と「space2」という2つのサブ名前空間を宣言しています。
コード例
<?php
namespace myspace\space1;
function hello() {
echo "Hello World from space1\n";
}
namespace myspace\space2;
function hello() {
echo "Hello World from space2\n";
}
// 各サブ名前空間の関数をエイリアス付きでインポート
use function myspace\space1\hello as hello1;
use function myspace\space2\hello as hello2;
hello1();
hello2();
?>
サブ名前空間内の関数やクラスにアクセスするには、まずuseキーワードを使って対象の名前空間を読み込む必要があります。関数をインポートする場合は、PHP 5.6以降で利用可能な「use function」構文を使用します。
実行結果
上記のコードを実行すると、次の出力が得られます。
Hello World from space1 Hello World from space2
押さえておきたいポイント
- 1つのファイル内に複数の名前空間を宣言することもできますが、可読性や保守性を考慮すると、1ファイルにつき1つの名前空間とするのが推奨されています。
- 名前空間の階層を区切る際は、必ずバックスラッシュ(\)を使用します。
- useキーワードはクラスだけでなく、関数(use function)や定数(use const)のインポートにも対応しています。
-
【PHP入門】preg_replaceで句読点・不要な記号を削除する方法
PHPで文字列から句読点や不要な記号を削除したい場合は、preg_replace関数と正規表現を組み合わせるのが最も一般的です。「残したい文字」以外をすべて空白に置き換えることで、句読点をまとめて取り除けます。ここでは、目的別に3つのパターンを紹介します。 1. 英字と数字だけを残す方法 英字と数字以外のすべての文字(カンマ、ピリオド、記号など)を半角スペースに置き換える例です。 <?php $s = "Hello, my name is Bobby !? I am 8 years !"; print_r( preg_replace('/[^a-z0-9]+/
-
PHPの名前空間(namespace)とは?基本の使い方とuseキーワードによるエイリアスを解説
この記事では、PHPにおける名前空間(namespace)について詳しく解説します。大規模なアプリケーションを開発する場合や、サードパーティ製のライブラリをプロジェクトに組み込む際には、クラス名や関数名が衝突してしまう可能性があります。こうした問題を回避するために、PHPの「名前空間」は、関連するクラス、インターフェース、関数、定数をひとつのグループとしてまとめる仕組みを提供しています。まずは、名前空間を宣言する基本的な構文から見ていきましょう。構文<?php namespace MyfirstNamespace { &