PHP Namespace Resolver拡張機能は、その名の通り、PHPコードを記述している際に、何らかの識別子がどの名前空間に属しているものかを解決してくれるものだ。
例えば、以下のようなユーティリティークラスを含むPHPコードがあったとする。
<?php
namespace mylib;
class Util
{
public static function createMessage($h)
{
if (6 <= $h && $h <= 11) {
$msg = "Good morning!, ";
} elseif (12 <= $h && $h <= 18) {
$msg = "Good afternoon!, ";
} elseif (19 <= $h && $h <= 22) {
$msg = "Good evening!, ";
} else {
$msg = "Good night!, ";
}
return $msg;
}
}
このファイルでは名前空間mylibにUtilクラスを作成し、そこに静的メソッドcreateMessageを定義している。このcreateMessageメソッドを利用するコードを以下に示す。
<?php
require "Util.php";
use mylib\Util;
date_default_timezone_set('Asia/Tokyo');
$d = getdate();
$h = $d["hours"];
$msg = Util::createMessage($h);
print($msg . $_POST["whom"]);
ここではrequire文で、ユーティリティークラスを含んだUtil.phpファイルを読み込み、use演算子でUtilクラスのエイリアスを作成し、その後、「Util::createMessage($h)」としてcreateMessage関数を呼び出している。このとき、「use mylib\Util」行がないと、関数呼び出しには名前空間(mylib)を付加して「mylib\Util::createMessage($h)」のようにする必要がある。が、実際にはプログラムコードを書いているときには、そのような行を記述する前に、名前空間のことを気にせず次のようなコードを書いてしまうこともあるだろう。
<?php
require "Util.php";
// use演算子を忘れたまま
date_default_timezone_set('Asia/Tokyo');
$d = getdate();
$h = $d["hours"];
$msg = Util::createMessage($h); // UtilクラスのcreateMessage関数を呼び出す
print($msg . $_POST["whom"]);
PHP Namespace Resolver拡張機能は、そうしたコードで名前空間を解決するのに役立つ。名前空間をまだ解決していないクラスを右クリックして、コンテキストメニューから[Import Class]を選択すると、対応するuse演算子を含んだコードが挿入される。
この場合は、上で見たのと同様なコードが自動的に挿入される(挿入位置はファイル先頭なので、必要に応じて、位置の調整を行った方がよいかもしれない)。
あるいはコンテキストメニューから[Expand Class]を選択すると、use演算子を含んだ行ではなく、名前空間を修飾したクラス表記にしてくれる。
上のコードなら、次のようになる。
<?php
require "Util.php";
date_default_timezone_set('Asia/Tokyo');
$d = getdate();
$h = $d["hours"];
$msg = \mylib\Util::createMessage($h);
print($msg . $_POST["whom"]);
あらかたコードを記述したところで使うというよりは、コードをガンガン書きながら、その途中で必要に応じてエイリアスを作成したり、名前空間を付加したりといった使い方をするのがよいだろう。
PHP File Types拡張機能は、新規にPHPファイルを作成する際に、素のPHPファイル、クラス、インタフェース、トレイトのひな型も同時に作成してくれるものだ。
この拡張機能をインストールすると、[エクスプローラー]ビューを右クリックしたときのコンテキストメニューに[New PHP 〜]という項目が追加される。これを利用することで、簡単に新規クラスなどを作成できるようになる。
クラスやインタフェースなどを作成するときには、コンテキストを考慮して、名前空間なども自動的に生成してくれる。ただし、判断が付かないときには名前空間を指定するダイアログが表示されるようになっている。
ひな型といっても簡単なコードが追加されるだけではあるが、人によっては便利に使えるかもしれない。
本連載では、VS CodeでPHPプログラミングを快適に行えるようにするための拡張機能を紹介してきた。これらを活用して、ぜひともVS CodeでPHPプログラミングをエンジョイしてほしい。
Copyright© Digital Advantage Corp. All Rights Reserved.