PHPのエイリアスと名前空間インポート:use演算子の使い方を徹底解説
はじめに
名前空間の重要な機能のひとつが、外部の完全修飾名に対してエイリアス(別名)を付けられることです。これは一般に「インポート」と呼ばれます。PHPの名前空間では、次のような種類のエイリアス/インポートがサポートされています。
- クラス名のエイリアス
- インターフェース名のエイリアス
- 名前空間名のエイリアス
- 関数名・定数名のエイリアス(インポート)
PHPでは、use 演算子を使ってエイリアスを作成します。
use 演算子の基本
ひとつのファイル内に複数の名前空間を宣言し、それぞれに同名の関数を定義しても、名前空間が異なるため競合せずに共存できます。
#test1.php
<?php
namespace mynamespace;
function sayhello(){
echo "Hello from mynamespace\n";
}
sayhello();
namespace mynewspace;
function sayhello(){
echo "Hello from my new space\n";
}
sayhello();
?>
出力結果:
Hello from mynamespace Hello from my new space
なお、PHP 5.6 以降では関数や定数も use function/use const を使ってインポートでき、as で別名を付けることも可能です。
<?php use function mynamespace\sayhello as hello; // 関数のエイリアス use const mynamespace\MYCONST as MC; // 定数のエイリアス ?>
複数の use 宣言をまとめる
use はカンマで区切ることで、1つの宣言で複数のクラスやインターフェースをまとめてインポートできます。
<?php
namespace mynamespace;
class myclass{
function test() { echo "myclass in mynamespace\n"; }
}
class testclass{
static function test() { echo "testclass in mynamespace\n"; }
}
use \mynamespace\myclass as myclass, \mynamespace\testclass;
$a = new myclass();
$a->test();
$b = new \mynamespace\testclass();
$b->test();
?>
出力結果:
myclass in mynamespace testclass in mynamespace
インポートと動的な名前
変数に格納した文字列を使って、インポート済みのクラスを動的にインスタンス化することもできます。
<?php
namespace mynamespace;
class myclass{
function test() { echo "myclass in mynamespace\n"; }
}
class testclass{
static function test() { echo "testclass in mynamespace\n"; }
}
use \mynamespace\myclass as myclass;
$a = new myclass; // エイリアス名でインスタンス化
$b = 'myclass';
$c = new $b; // 変数経由でも同じクラスを参照できる
?>
use の記述位置に関するルール
use は、ファイルの最も外側(グローバルスコープ)か、名前空間宣言の中でのみ記述できます。インポート処理は実行時ではなくコンパイル時に行われるため、関数内などのブロックスコープでは使えません。したがって、次のコードは不正です。
<?php
function myfunction(){
use myspace\myclass; // エラー:関数内では use は使えない
}
?>
また、include や require で読み込まれたファイルは、親ファイルのインポート設定を引き継ぎません。エイリアスのルールはファイルごとに独立しています。
-
PHPのlog()関数とは?自然対数の計算方法と使い方を解説
定義と使い方log() 関数は、数値の自然対数(natural logarithm)を計算します。対数とは、指数関数の逆演算のことです。たとえば 102=100 という関係は「log10100=2」と表せます。自然対数はオイラー数 e を底として計算され、PHP では定義済み定数 M_E によって e の値(2.7182818284590452354)が提供されています。具体例を挙げると、exp(4.60517018599)=100(つまり e4.60517018599=100)が成り立つため、loge100=4.60517018599 となります。PHP では、この自然対数(loge)を l
-
PHPのlcg_value()関数とは?乱数生成の基本と使い方を解説
lcg_value()関数の定義と使い方lcg_value()関数は、0から1までの範囲でランダムな数値(浮動小数点数)を生成するPHP組み込み関数です。「LCG」とは「線形合同法(Linear Congruential Generator)」の略称です。この手法は、不連続な区分線形方程式を用いて擬似乱数列を計算するアルゴリズムで、擬似乱数生成アルゴリズムの中でも最も古くから知られているものの一つです。構文lcg_value ( void ) : floatパラメータこの関数は引数を受け取りません。戻り値lcg_value()関数は、0.0以上1.0以下の範囲にある擬似乱数のfloat値を返し