PHPでIntelephenseを使いこなす15の手引き

PHPのコードエディタIntelephenseを使用した開発環境の構築PHP
この記事は約24分で読めます。

※本記事のコンテンツは、利用目的を問わずご活用いただけます。実務経験10000時間以上のエンジニアが監修しており、常に解説内容のわかりやすさや記事の品質に注力しておりますので、不具合・分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。(理解できない部分などの個別相談も無償で承っております)
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

この記事を読むと、PHPの開発がこれまで以上にスムーズになります。

どうしてかと言いますと、今回はPHPの開発を劇的に効率化するツール「Intelephense」を使いこなす方法を具体的に15点紹介します。

新規プロジェクトの作成からデバッグ、コードのリファクタリングまで、Intelephenseの力を最大限に引き出す方法を学びましょう。

●PHPとは

PHP(Hypertext Preprocessor)は、ウェブ開発に広く利用されるスクリプト言語です。

シンプルで学びやすいだけでなく、動的なウェブページの作成に非常に適しているため、初心者からプロフェッショナルまで幅広く利用されています。

●Intelephenseとは

Intelephenseは、PHP開発者の生産性を向上させるための一種のエディタ拡張機能です。

コード補完、定義へのジャンプ、リファクタリングといった機能を提供し、コードの読みやすさと整理を助けます。

これらの機能は、日々のコーディング作業をより快適にし、エラーの可能性を減らします。

○Intelephenseの機能

Intelephenseの提供する主な機能は次のとおりです。

  1. 高速なコード補完
  2. 定義へのジャンプ
  3. コードのリファクタリング
  4. シンボルの検索
  5. エラーチェック
  6. コードフォーマッター

これらの機能は全て、PHP開発をより効率的に行うためのものです。

●Intelephenseのインストール方法

IntelephenseはVisual Studio Code(VSCode)の拡張機能として利用できます。

VSCodeの拡張機能ビューで「Intelephense」を検索し、インストールボタンをクリックするだけで簡単にインストールできます。

●Intelephenseの使い方

それでは、Intelephenseの具体的な使い方を見ていきましょう。

下記のサンプルコードでは基本的な使い方から始め、具体的な利用例を通じてIntelephenseの力を理解していきます。

○サンプルコード1:基本的な機能の使用

Intelephenseの最も基本的な機能の一つが「コード補完」です。

下記のコードは、あるクラスのメソッドを呼び出しています。

<?php

class SampleClass {
    public function sampleMethod() {
        return "Hello, Intelephense!";
    }
}

$sample = new SampleClass();
echo $sample->;

$sample->と入力した時点で、IntelephenseはsampleMethodを自動的に提案します。

この補完機能はタイピングを減らし、エラーを防ぐために役立ちます。

さらに、利用可能なメソッドやプロパティを見つけるのに役立つため、新しいコードベースの探索にも有用です。

下記のように補完してみます。

<?php

class SampleClass {
    public function sampleMethod() {
        return "Hello, Intelephense!";
    }
}

$sample = new SampleClass();
echo $sample->sampleMethod();

実行結果は「Hello, Intelephense!」となります。

これは、sampleMethodメソッドがこの文字列を返しているからです。

○サンプルコード2:補完機能の使用

補完機能は、開発者がクラスやメソッドの名前を完全に覚えていなくても、入力を始めると全ての利用可能なオプションを表示してくれます。

下記のコードでは、StringFunctionsクラスを使って文字列を操作する例を見てみましょう。

このクラスにはさまざまな文字列操作のためのメソッドが用意されています。

<?php

class StringFunctions {
    public function convertToLowercase($string) {
        return strtolower($string);
    }

    public function convertToUppercase($string) {
        return strtoupper($string);
    }
}

$stringFunctions = new StringFunctions();
echo $stringFunctions->;

上記のコードで、$stringFunctions->と入力したとき、IntelephenseはconvertToLowercaseconvertToUppercaseの2つのメソッドを提案します。

下記のコードではconvertToLowercaseメソッドを呼び出しています。

<?php

class StringFunctions {
    public function convertToLowercase($string) {
        return strtolower($string);
    }

    public function convertToUppercase($string) {
        return strtoupper($string);
    }
}

$stringFunctions = new StringFunctions();
echo $stringFunctions->convertToLowercase('HELLO INTELEPHENSE!');

このコードは、「HELLO INTELEPHENSE!」という文字列をconvertToLowercaseメソッドを用いて全て小文字に変換します。

したがって、実行結果は「hello intelephense!」となります。

これにより、Intelephenseの補完機能がコードの迅速な記述とエラーの防止にどのように寄与するかを理解できます。

Intelephenseは、大規模なプロジェクトで多数のクラスやメソッドが存在する場合に特に便利です。

そのため、このツールを効果的に使いこなすことで、PHP開発の効率と品質が向上します。

次のサンプルコードでは、定義へのジャンプというIntelephenseの別の機能を見ていきましょう。

○サンプルコード3:定義へのジャンプ

Intelephenseのもう一つの強力な機能は、定義へのジャンプです。

これは特に、大規模なプロジェクトで多くのファイルとクラスが存在する場合に役立ちます。

下記のコードでは、特定のクラスのメソッドがどのように定義されているかを探す状況を想定しています。

<?php

class StringFunctions {
    public function convertToLowercase($string) {
        return strtolower($string);
    }

    public function convertToUppercase($string) {
        return strtoupper($string);
    }
}

$stringFunctions = new StringFunctions();
echo $stringFunctions->convertToLowercase('HELLO INTELEPHENSE!');

上記のコードでは、convertToLowercaseメソッドの定義を探したい場合、そのメソッド名をクリックして「定義へ移動」を選択します。

Intelephenseは即座にそのメソッドの定義が記述されている場所にジャンプします。

この機能により、コードベースの全体的な理解が進み、デバッグ作業が容易になります。

●Intelephenseの応用例

Intelephenseの特性を十分に活かすためには、具体的な例を通じて、それがどのようにPHP開発に役立つのかを理解することが重要です。

次のサンプルコードでは、名前空間の使用に焦点を当て、Intelephenseがこの領域でどのように活用できるかを見てみましょう。

○サンプルコード4:名前空間の使用

名前空間は、クラスや関数などのコード要素を論理的にグループ化するための機能です。

下記のコードは、名前空間を使用してクラスを整理する一例です。

<?php

namespace StringOperations;

class StringFunctions {
    public function convertToLowercase($string) {
        return strtolower($string);
    }

    public function convertToUppercase($string) {
        return strtoupper($string);
    }
}

use StringOperations\StringFunctions;

$stringFunctions = new StringFunctions();
echo $stringFunctions->convertToLowercase('HELLO INTELEPHENSE!');

上記のコードでは、StringFunctionsクラスはStringOperationsという名前空間に属しています。

Intelephenseを使用すると、名前空間の名前を入力するときに、利用可能なすべての名前空間が表示され、選択するだけで適切な名前空間を迅速に入力できます。

この例では、「hello intelephense!」という文字列が出力されます。

このように、Intelephenseは名前空間の管理を助け、コードの可読性と整理性を向上させます。

○サンプルコード5:コードフォーマッターの使用

コードフォーマッターは、コードを規則に基づいて整形し、その可読性を向上させる役割を果たします。

これはPHPコーディングのツール、Intelephenseにも備わっています。

コードフォーマッターの使用例を紹介します。

<?php

namespace StringOperations;

class StringFunctions {
public function convertToLowercase($string) {
return strtolower($string);
}

public function convertToUppercase($string) {
return strtoupper($string);
}
}

use StringOperations\StringFunctions;

$stringFunctions = new StringFunctions();
echo $stringFunctions->convertToLowercase('HELLO INTELEPHENSE!');

上記のコードは、インデントが適切に設定されていないため、少し読みにくいです。

しかし、Intelephenseのコードフォーマッター機能を使うと、一瞬でコードが整形されます。

<?php

namespace StringOperations;

class StringFunctions {
    public function convertToLowercase($string) {
        return strtolower($string);
    }

    public function convertToUppercase($string) {
        return strtoupper($string);
    }
}

use StringOperations\StringFunctions;

$stringFunctions = new StringFunctions();
echo $stringFunctions->convertToLowercase('HELLO INTELEPHENSE!');

結果として、「hello intelephense!」という文字列が出力されます。

このように、コードフォーマッターは、より清潔で一貫したコードを維持するのに役立ち、結果的にはエラーの発生を減らし、デバッグ作業を助けます。

○サンプルコード6:コード検索の使用

大規模なプロジェクトでは、特定の関数やクラス、変数を検索することがよくあります。

Intelephenseのコード検索機能は、このような場合に非常に便利です。

下記のコードでは、特定のメソッド名を検索しています。

<?php

namespace StringOperations;

class StringFunctions {
    public function convertToLowercase($string) {
        return strtolower($string);
    }

    public function convertToUppercase($string) {
        return strtoupper($string);
    }
}

use StringOperations\StringFunctions;

$stringFunctions = new StringFunctions();
echo $stringFunctions->convertToLowercase('HELLO INTELEPHENSE!');

このコードでは、convertToLowercaseメソッドを探す場合、メソッド名を入力すると、コード全体からその名前のメソッドを検索します。

Intelephenseは検索結果をリストアップし、それぞれのメソッドがどの場所で定義または使用されているかを表します。

これにより、コードの全体的な流れを把握しやすくなります。

○サンプルコード7:リファクタリングの使用

リファクタリングとは、コードの構造を改善し、その可読性と保守性を向上させることを指します。

Intelephenseには、このリファクタリングを助ける機能が含まれています。

下記のコードは、その使用例を示しています。

<?php

namespace StringOperations;

class StringFunctions {
    public function convertToLowercase($string) {
        return strtolower($string);
    }
    public function convertToUppercase($string) {
        return strtoupper($string);
    }
}

use StringOperations\StringFunctions;

$stringFunctions = new StringFunctions();
echo $stringFunctions->convertToLowercase('HELLO INTELEPHENSE!');

このコードでは、convertToLowercaseconvertToUppercaseという二つの関数があります。

これらは同じ文字列操作を行っていますが、それぞれ小文字と大文字に変換する機能があります。

このような場合、リファクタリングによってコードの冗長性を排除し、保守性を向上させることができます。

<?php

namespace StringOperations;

class StringFunctions {
    public function convertCase($string, $case = 'lower') {
        return $case === 'lower' ? strtolower($string) : strtoupper($string);
    }
}

use StringOperations\StringFunctions;

$stringFunctions = new StringFunctions();
echo $stringFunctions->convertCase('HELLO INTELEPHENSE!');

ここでは、二つの関数を一つの関数convertCaseに統合しました。

この関数は、第二引数に’lower’または’upper’を渡すことで、文字列を小文字または大文字に変換します。

このように、リファクタリングを通じてコードの整理と簡略化を行うことで、コードの品質を向上させることができます。

●Intelephenseでのエラー対処法

コードエディタとしてのIntelephenseは、その強力なエラー検出機能で知られています。

しかし、どんなに優れたツールであっても、使用中にエラーが発生することは避けられません。

ここでは、Intelephenseでよく遭遇するエラーとその対処法を解説します。

○サンプルコード8:エラー解消方法

下記のコードは、一見すると問題ないように見えますが、実はエラーを含んでいます。

<?php

namespace StringOperations;

class StringFunctions {
    public function convertCase($string, $case = 'lower') {
        return $case === 'lower' ? strolower($string) : strtouppercase($string);
    }
}

use StringOperations\StringFunctions;

$stringFunctions = new StringFunctions();
echo $string

Functions->convertCase('HELLO INTELEPHENSE!');

ここでのエラーは、strolowerstrtouppercaseという関数名の誤りです。

正しくは、strtolowerstrtoupperです。

Intelephenseはこのような関数名の誤りを瞬時に検出し、エラーとして表示します。

したがって、コードの修正は次のようになります。

<?php

namespace StringOperations;

class StringFunctions {
    public function convertCase($string, $case = 'lower') {
        return $case === 'lower' ? strtolower($string) : strtoupper($string);
    }
}

use StringOperations\StringFunctions;

$stringFunctions = new StringFunctions();
echo $stringFunctions->convertCase('HELLO INTELEPHENSE!');

これにより、エラーは解消され、コードは正常に動作します。

このように、Intelephenseは開発者のコーディング作業を助け、エラーの早期発見と解消を可能にします。

●Intelephenseのカスタマイズ方法

Intelephenseはカスタマイズ可能なツールであり、自身の開発環境に合わせて設定を変更することが可能です。

Intelephenseの基本的なカスタマイズ方法をいくつか紹介します。

○サンプルコード9:設定のカスタマイズ

Intelephenseの設定は、その設定ファイルから直接編集することができます。

その設定ファイルは一般的に.vscode/settings.jsonというパスに位置しています。

下記のコードは、Intelephenseの設定をカスタマイズする一例を表しています。

{
    "intelephense.environment.phpVersion": "7.4",
    "intelephense.format.braces": "k&r",
    "intelephense.completion.fullyQualifyGlobalConstantsAndFunctions": true
}

このコードでは、次の3つの設定をカスタマイズしています。

intelephense.environment.phpVersion

この設定は、Intelephenseが対応するPHPのバージョンを指定します。ここでは、7.4を指定しています。

intelephense.format.braces

この設定は、コードのブレース(波括弧)のスタイルを指定します。

ここでは、”k&r”スタイルを指定しています。

intelephense.completion.fullyQualifyGlobalConstantsAndFunctions

この設定は、グローバルな定数や関数を自動補完するときにフルパスで表示するかどうかを指定します。

ここでは、trueを指定しており、フルパスで表示するようにしています。

○サンプルコード10:テーマのカスタマイズ

Intelephenseは、エディタのテーマをカスタマイズすることも可能です。

テーマのカスタマイズは、エディタの視覚的な側面に影響を与え、開発者の作業環境をより快適なものにすることができます。

下記のコードは、テーマのカスタマイズの一例を表しています。

{
    "workbench.colorTheme": "Monokai Dimmed"
}

このコードでは、workbench.colorThemeという設定を使用して、エディタのテーマを”Monokai Dimmed”に設定しています。

この設定は、エディタ全体の色彩スキームを制御し、見やすさと使いやすさに大きな影響を与えます。

○サンプルコード11:キーボードショートカットのカスタマイズ

キーボードショートカットは、開発者の作業効率を大幅に向上させる重要なツールです。

Intelephenseでは、自分の好みに合わせてキーボードショートカットをカスタマイズすることが可能です。

{
    "keybindings": [
        {
            "key": "ctrl+shift+i",
            "command": "intelephense.format.document"
        }
    ]
}

このコードでは、keybindingsという設定を使用して、Intelephenseのドキュメントフォーマットコマンドをキーボードショートカットctrl+shift+iに割り当てています。

これにより、このショートカットキーを押すことで、瞬時にドキュメント全体を整形することが可能になります。

○サンプルコード12:拡張機能の追加

Intelephenseの機能を更に強化するために、他の拡張機能を追加することも可能です。

これらの拡張機能は、Intelephenseと連携してさまざまな機能を提供します。

下記のコードは、IntelephenseにPHP Debug拡張機能を追加するための設定例です。

{
    "php.validate.executablePath": "/usr/local/bin/php",
    "php.validate.run": "onType",
    "phpDebug.showConsole": true
}

このコードでは次の設定を行っています。

php.validate.executablePath

ここでは、PHPの実行可能ファイルへのパスを指定しています。

ここで指定したパスのPHPがIntelephenseで利用されます。

php.validate.run

この設定は、コードをタイプするときにリアルタイムでコードを検証することを指定しています。

phpDebug.showConsole

この設定は、デバッグコンソールを表示するかどうかを指定しています。

ここでは、trueを指定していますので、デバッグ時にコンソールが表示されます。

○サンプルコード13:エラー表示のカスタマイズ

エラー表示もIntelephenseでカスタマイズ可能です。

下記のコードは、エラー表示のカスタマイズの一例を示しています。

{
    "intelephense.diagnostics.undefinedTypes": false,
    "intelephense.diagnostics.undefinedFunctions": false,
    "intelephense.diagnostics.undefinedConstants": false
}

このコードでは次の設定を行っています。

intelephense.diagnostics.undefinedTypes

この設定は、未定義の型に対するエラー表示を無効にします。

ここでは、falseを指定していますので、未定義の型に対するエラー表示は無効となります。

intelephense.diagnostics.undefinedFunctions

この設定は、未定義の関数に対するエラー表示を無効にします。

ここでは、falseを指定していますので、未定義の関数に対するエラー表示は無効となります。

intelephense.diagnostics.undefinedConstants

この設定は、未定義の定数に対するエラー表示を無効にします。

ここでは、falseを指定していますので、未定義の定数に対するエラー表示は無効となります。

これらの設定を適用することで、エラー表示を自分の好みに合わせてカスタマイズすることが可能です。

○サンプルコード14:コードスニペットの追加

コードスニペットとは、頻繁に使用するコードの断片を短いキーワードで呼び出すことができる機能です。

Intelephenseでは、コードスニペットをカスタマイズし、自分だけのスニペットを追加することも可能です。

下記のコードは、新たなPHPのコードスニペットを追加する設定例です。

{
    "php": {
        "prefix": "mySnippet",
        "body": [
            "$${1:variable} = new ${2:Class}();",
            "$${1:variable}->${3:method}();"
        ],
        "description": "My custom PHP snippet"
    }
}

このコードでは次の設定を行っています。

prefix

ここでは、スニペットを呼び出すためのキーワードを指定します。

ここでは「mySnippet」を指定しています。

body

この設定では、スニペットの本体となるコードを指定します。

ここでは、クラスのインスタンスを生成し、メソッドを呼び出すコードを指定しています。

description

この設定では、スニペットの説明を指定します。

ここでは「My custom PHP snippet」という説明を指定しています。

この設定を適用すると、コードエディタで「mySnippet」と入力すると、指定したコードが自動で挿入されます。

これにより、頻繁に使用するコードを簡単に入力することが可能となり、コーディングの効率を大幅に向上させることができます。

○サンプルコード15:その他のカスタマイズ

Intelephenseには、上記で説明した以外にも様々なカスタマイズが可能です。

下記のコードは、その他のカスタマイズの一例を表しています。

{
    "intelephense.environment.phpVersion": "7.4",
    "intelephense.completion.fullyQualifyGlobalConstantsAndFunctions": true,
    "intelephense.files.associations": ["*.php", "*.phtml"]
}

このコードでは次の設定を行っています。

intelephense.environment.phpVersion

この設定では、使用するPHPのバージョンを指定します。

ここでは「7.4」を指定しています。

intelephense.completion.fullyQualifyGlobalConstantsAndFunctions

この設定では、グローバル定数と関数を完全に資格付けするかどうかを指定します。

ここでは、trueを指定していますので、グローバル定数と関数は完全に資格付けされます。

intelephense.files.associations

この設定では、Intelephenseで扱うファイルの拡張子を指定します。

ここでは、「.php」、「.phtml」を指定していますので、これらの拡張子を持つファイルがIntelephenseで扱われます。

以上のように、Intelephenseのカスタマイズは非常に幅広く、それぞれの開発環境に最適化することが可能です。

●注意点と対処法

Intelephenseを使用する上で留意すべき点と対処法をいくつか解説します。

○ライセンスの認識エラー

Intelephenseはフリーミアムな製品であり、一部の機能を利用するためには有料ライセンスが必要です。

ライセンス購入後、認識されない場合があります。

その際は、VSCodeを再起動したり、Intelephenseの拡張機能を再インストールすると解決することがあります。

○未知のシンボルエラー

Intelephenseはデフォルトで未知のクラスや関数をエラーとして表示しますが、一部のフレームワークやライブラリの関数はエラーとして誤検出されることがあります。

この問題は intelephense.diagnostics.undefinedSymbolsfalse に設定することで解決します。

○キャッシュ関連の問題

Intelephenseはパフォーマンスを改善するためにファイルのキャッシュを使用しますが、時折このキャッシュが原因で問題が発生します。

その場合、コマンドパレットから Intelephense: Clear Cache and Reload を選択することで解決します。

下記のコードは上記の対処法を適用する設定例です。

{
    "intelephense.diagnostics.undefinedSymbols": false
}

この設定を適用することで、未知のクラスや関数のエラー表示を無効化します。

これにより、一部のフレームワークやライブラリの関数がエラーとして誤検出される問題を解決することができます。

まとめ

以上、PHP開発を支えるツール、Intelephenseの使い方について解説してきました。

本記事では、Intelephenseの設定やカスタマイズの方法、注意点と対処法まで詳細に見てきました。

Intelephenseは、PHPの開発効率を飛躍的に向上させるツールであり、設定次第でその可能性はさらに広がります。

機能の使いこなしやカスタマイズを通じて、より効率的なコーディングを目指してみてください。

ここで紹介した内容が、あなたのPHP開発に役立つことを願っています。