連載
» 2018年09月25日 05時00分 公開

VS CodeからPHPアプリをローカル実行/デプロイ!Visual Studio Code+PHPの可能性を探る(3/3 ページ)

[かわさきしんじ,Insider.NET編集部]
前のページへ 1|2|3       

PHP Namespace Resolver拡張機能

 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;
  }
}


Utilユーティリティークラスを含んだUtil.phpファイル

 このファイルでは名前空間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"]);


createMessage関数を利用するPHPコード(hello.phpファイル)

 ここでは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"]);


use演算子でエイリアスを作成しないまま、Utilクラスを直接使おうとしているコード

 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 File Types拡張機能は、新規にPHPファイルを作成する際に、素のPHPファイル、クラス、インタフェース、トレイトのひな型も同時に作成してくれるものだ。

PHP File Types拡張機能 PHP File Types拡張機能

 この拡張機能をインストールすると、[エクスプローラー]ビューを右クリックしたときのコンテキストメニューに[New PHP 〜]という項目が追加される。これを利用することで、簡単に新規クラスなどを作成できるようになる。

コンテキストメニューから[New PHP Class]を選択して、クラスを新規作成 コンテキストメニューから[New PHP Class]を選択して、クラスを新規作成

 クラスやインタフェースなどを作成するときには、コンテキストを考慮して、名前空間なども自動的に生成してくれる。ただし、判断が付かないときには名前空間を指定するダイアログが表示されるようになっている。

 ひな型といっても簡単なコードが追加されるだけではあるが、人によっては便利に使えるかもしれない。


 本連載では、VS CodeでPHPプログラミングを快適に行えるようにするための拡張機能を紹介してきた。これらを活用して、ぜひともVS CodeでPHPプログラミングをエンジョイしてほしい。

「Visual Studio Code+PHPの可能性を探る」のインデックス

Visual Studio Code+PHPの可能性を探る

前のページへ 1|2|3       

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。