corner imagecorner image
IDEPlatformPluginsDocs & SupportCommunityPartners

NetBeans IDE の PHP コードテンプレート

コードテンプレートは、NetBeans IDE によって提供される記述済みのコードスニペットです。コード補完を使用するか、またはテンプレートの省略名に続けて Tab キーを押すことによって、スニペットを自分のコードにペーストできます。適切な PHP スニペットでコードを囲むこともできます。さらに、独自のコードテンプレートも定義できます。このチュートリアルでは、コードテンプレートの使用方法を解説し、独自のコードスニペットを定義するために役立つユースケースを紹介します。

目次

このページの内容は NetBeans IDE 6.9-7.0 が対象です

このチュートリアルを完了するには、次のソフトウェアとリソースが必要です。

ソフトウェアまたはリソース 必須バージョン
NetBeans IDE PHP ダウンロードバンドル
Java Development Kit (JDK) 5 または 6

 

定義済みの PHP コードテンプレート

NetBeans で定義されているコードテンプレートを表示するには、「ツール」>「オプション」(Mac では「NetBeans」>「環境設定」) を開き、「エディタ」機能を選択し、「コードテンプレート」タブを選択します。PHP のコードテンプレートを表示するには、「言語」ドロップダウンリストで「PHP」を選択します。コードテンプレートの省略名と展開されるテキストの表が表示されます。表でコードテンプレートを選択すると、その展開されるテキストが「展開されるテキスト」タブに表示されます。

「オプション」ウィンドウで PHP コードテンプレートの cli テンプレートを選択した状態

この図では、新規クラス (cls) コードテンプレートが選択され、「展開されるテキスト」タブにはテンプレートが展開されたときの内容が表示されています。次の節では、Tab 機能を使用してコード内でこのテンプレートを展開します。

注: 新規クラス (cls) コードテンプレートの構文については「PHP コードテンプレートの構文」の節で説明します。

PHP コードテンプレートの使用方法

PHP コードにコードテンプレートを挿入する方法は 3 つあります。どの挿入方法が適しているかは状況によって異なります。コードテンプレートの挿入方法は次の 3 とおりです。

テンプレートを挿入したあとに、IDE の補助機能を使用して、展開されたテンプレートコード内のパラメータを編集することができます。

省略名と Tab キーを使用したコードテンプレートの展開

「オプション」ダイアログの「コードテンプレート」タブをもう一度見てみましょう。最下部にある「テンプレートを展開」ドロップダウンフィールドでキーの組み合わせを選択します。これは、コードテンプレートの省略名を入力したあとに押すことによってコードテンプレートを展開するキーの組み合わせです。デフォルトでは Tab キーが選択されていますが、代わりにほかの組み合わせも選択できます。

「テンプレートを展開」ドロップダウンボックス

この節ではこれ以降、「テンプレートを展開」フィールドでデフォルトの Tab キーが選択されていると仮定して説明を進めます。

テンプレートの省略名がコード補完のキーワードの一部でもあるときに、省略名を展開することが難しい場合があります。このような場合、コード補完を使用してテンプレートを挿入するほうが簡単です。

省略名と Tab キーを使用して新規クラスコードテンプレートを展開する

  1. 空の PHP ファイルを作成します。
  2. そのファイルの PHP ブロックで、「cls」と入力して Tab キーを押します。cls コードテンプレートが展開されます。

    注意: 省略名のスペルを間違えないようにしてください。省略名のスペルが間違っていると展開は機能しません。

    コードテンプレートの展開
  3. プレースホルダのクラス名 (class_name) が自動的に選択されます。クラスに付ける名前をその場で入力でき、入力した名前によってプレースホルダが上書きされます。名前の入力を終えて Enter キーを押すと、最初の関数 (この場合はコンストラクタ) の名前が IDE で選択されます。

    注: プレースホルダ名については「プレースホルダ名」の節で詳しく説明します。

    クラス名の編集後にコンストラクタ関数名が選択された状態
  4. 関数名を編集するか、またはデフォルトの名前をそのまま使用します。もう一度 Enter キーを押すと、カーソルが関数本体の内部に移動します。実際の開発時には、ここで関数およびクラスの残り部分のコーディングを開始します。

    カーソルの最終位置は ${cursor} パラメータによって決定されます。このパラメータについては「予約名」の節で説明します。

コード補完によるコードテンプレートの挿入

コード補完を使用してコードテンプレートを挿入するには、テンプレートの省略名ではなく、展開されるスニペットの先頭部分を入力します。コード補完ダイアログが開き、スニペットが表示されます。

コード補完を使用して新規クラスコードテンプレートを挿入する

  1. PHP ファイルの PHP ブロックで、「cla」と入力します。
  2. コード補完ダイアログが表示されるまで待ちます。
  3. 省略名 (cls) とともに一覧表示される新規クラステンプレートを探します。PHPDoc フレームには展開されたテンプレートが表示されます。
    新規クラステンプレートを表示するコード補完ダイアログ
  4. 新規クラステンプレートをクリックします。IDE で、そのテンプレートがコードに挿入されます。
  5. プレースホルダのクラス名 (class_name) が自動的に選択されます。クラスに付ける名前をその場で入力でき、入力した名前によってプレースホルダが上書きされます。名前の入力を終えて Enter キーを押すと、最初の関数 (この場合はコンストラクタ) の名前が IDE で選択されます。
    クラス名の編集後にコンストラクタ関数名が選択された状態
  6. 関数名を編集するか、またはデフォルトの名前をそのまま使用します。もう一度 Enter キーを押すと、カーソルが関数本体の内部に移動します。実際の開発時には、ここで関数およびクラスの残り部分のコーディングを開始します。

テンプレートでコードを囲む

次の PHP テンプレートでコードを囲むことができます。

  • while
  • do
  • switch
  • if / elseif
  • trycatch
  • foreach
  • for
  • ob_startob_end_clean

テンプレートでコードを囲むには、コードを選択して「囲む...」ダイアログを開きます。「囲む...」ダイアログを開くには、Alt-Insert キーを押すか、またはヒント ヒントアイコン アイコンをクリックします。

if(true) テンプレートでコードを囲む

  1. 変数 $a = true および $b = 10 を含む PHP ブロックを作成します。
    <?php
    $a = false;

    $b = 10;
    ?>
  2. $b = 10;」行を選択します。
    変数 $b = 10 を選択/li>
  3. ヒント ヒントアイコン アイコンをダブルクリックするか、または Alt-Enter キーを押します。「囲む...」ダイアログが開きます。
    「囲む」ダイアログが開いた状態
  4. 囲む if(true){...」をクリックします。
    「囲む」ダイアログで「囲む if(true)」を選択した状態
  5. IDE で、「$b = 10;」行が「if(true){...」テンプレートで囲まれます。
    挿入された if(true) テンプレート

IDE では自動的に、出現済みでもっとも近い位置にある適切な変数が if 文の条件として挿入されます。$a はブール型であり、if(true){} 文はその条件としてブール型の変数をパラメータに取るので、この場合は $a 変数が挿入されます。また、IDE で条件に挿入された変数が正しい変数でない場合、その条件が自動的に編集のために選択されます。つまり、テンプレートの挿入後ただちに、正しい変数の入力を開始できます。この場合、コード補完が正しい変数の選択に役立つことがあります。

注:if(true){} テンプレートについては、「ヒントによって定義されるパラメータ」の節で詳しく説明します。

条件として使用する変数をコード補完から選択

Enter キーを押して文の条件を終了します。カーソルが適切な位置 (この場合は「$b = 10;」行の末尾) に移動します。条件を編集して Enter キーを押すか、または自動挿入された条件を受け入れて Enter キーを押すことができます。どちらの場合でも、カーソルは条件ブロックから適切な位置に移動します。

編集を行わなかったあとのカーソル編集後のカーソル

次の節では、展開されたテンプレート内のパラメータの編集について詳しく説明します。

展開されたテンプレート内のパラメータの編集

コードへのテンプレートの挿入に関する節では、新規クラステンプレートの展開時に IDE でクラス名が編集のために自動選択されることと、if(true) テンプレートの展開時に IDE で条件名が編集のために自動選択されることを示しました。この節では、展開されたテンプレート内のパラメータの編集を補助する IDE の機能について説明します。

パラメータの複数のインスタンスを同時に編集する

  1. 空の PHP ブロックで「for」と入力し、Ctrl-スペースを押してコード補完を開きます。繰り返し処理テンプレート (省略名 iter) を選択してクリックします。新しい繰り返し処理がコードに挿入されます。
    コード補完で繰り返し処理テンプレートを選択した状態
  2. 繰り返し処理には、パラメータとして $index および $array の 2 つの変数があります。$index が編集のために自動的に選択されます。
    繰り返し処理の行がパラメータとともに挿入され、$index パラメータが編集のために選択された状態

    i」と入力します。$index の 3 つのインスタンスがすべて $i に変化します。

    挿入された反復処理の行に含まれる $index パラメータを $i に変更した状態
  3. Enter キーを押します。パラメータ $array が選択されます。
  4. もう一度 Enter キーを押します。カーソルが繰り返し処理のメソッド本体に移動します。

NetBeans の変数名リファクタリング機能では、変数の 1 つのインスタンスを編集することにより、その変数のすべてのインスタンスを変更できます。この機能がテンプレートのパラメータに適用されると役に立つことがわかります。

NetBeans IDE の PHP エディタは、変数に対する正しいメソッドの識別も補助します。

テンプレート内の変数を正しいメソッドと関連付ける

  1. 空の PHP ブロックで、次のコードを入力します。
    <?php

    $arr = array(new ArrayIterator($array()), new ArrayObject($array()));

    ?>
  2. $arr 配列を宣言する行のあとに「fore」と入力し、コード補完を使用して foreach テンプレート (省略名 fore) を挿入します。
    コード補完による foreach テンプレートの挿入
  3. (Enter キーを 2 回押して)foreach 関数の本体にカーソルを移動し、「$value」と入力するか、または「$」とだけ入力してコード補完から「$value」を選択します。
    <?php

    $arr = array(new ArrayIterator($array()), new ArrayObject($array()));

    foreach ($arr as $value) {
    $value
    }

    ?>
  4. $value」に続けて「->」と入力します。コード補完により、配列 $arr から派生した $value 変数に対する適切なメソッドが提示されます。
    $value 変数に対するコード補完。$value は ArrayIterator のメソッド

PHP コードテンプレートの構文

NetBeans IDE は、IDE がサポートするすべての言語のコードテンプレートを提供します。一部の構文はすべての言語に共通です。そのほかの構文は言語ごとに固有です。この節では、もっともよく使われる一般的なテンプレート構文と、PHP テンプレートに固有の構文について説明します。

PHP コードテンプレートには、PHP コードとテンプレートパラメータを含めることができます。PHP テンプレートは PHP コードのみで、パラメータのみで、またはコードとパラメータの両方で構成できます。

コードテンプレートパラメータの構文では、ドル記号 $ に続けてパラメータの定義を大括弧 {...} で囲みます。この構文の内部で、テンプレートパラメータの形態は次の 4 つのいずれかです。

以降の節では、コードテンプレートパラメータの各形態について説明します。

注: $$${VARIABLE...} PHP コードテンプレートの構文が、$$${...} のように 3 つのドル記号に大括弧が続く形になっている場合があります。この場合、コードテンプレートには変数とその名前が含まれています。ここで示す構文は、エスケープされたドル記号 (二重のドル記号 $$ として記述される) に、変数名に対応するパラメータ ${VARIABLE...} を続けたものです。たとえば、コードテンプレート「catch ${Exception} $$${exc}」は「catch Exception $exc」に展開されます。

プレースホルダ名


もっとも単純なケースでは、コードテンプレートパラメータは任意のプレースホルダ値です。テンプレートが展開されると、IDE でこのプレースホルダ名が編集のために選択されます。


たとえば、このチュートリアルの「定義済み PHP テンプレート」および「省略名と Tab キーを使用したコードテンプレートの展開」の各節で示した新規クラステンプレート (cls) を考えます。新規クラステンプレートの展開されたテキストは「class ${className}」で始まります。ここで、単語 class は PHP コードであり、${className} はパラメータです。このパラメータは単に、クラスの名前の任意のプレースホルダ値です。IDE でテンプレートが展開されると、${className}class_name になります。IDE は class_name を単なるプレースホルダ値と認識し、編集のためにこの値を自動的に選択します。

コードテンプレートの展開

予約名

IDE では、処理指示として使用される 2 つのパラメータ名が予約されています。

  • ${cursor} は、展開されたテンプレート内で自動選択されたすべての値の編集を完了したあとのカーソルの位置を定義します。
  • ${selection} は、エディタの選択内容をペーストする位置を定義します。これは、ユーザーがエディタでテキストを選択するたびにヒントとして表示される「選択テンプレート」によって使用されます。テンプレートに ${selection} が含まれる場合、それは通常、${cursor} と同じ位置を参照します。

たとえば、このチュートリアルの「定義済み PHP テンプレート」および「省略名と Tab キーを使用したコードテンプレートの展開」の各節で示した新規クラステンプレート (cls) をもう一度考えます。このテンプレートには ${ClassName} および $__construct の 2 つのパラメータが含まれます。関数本体には ${cursor} および ${selection} の各パラメータがあります。

class ${ClassName} {

function ${__construct} {
${selection}${cursor}

}

}

テンプレートが展開されたあとに、プレースホルダ class_name が自動的に選択されます (1)。Enter キーを押すと、プレースホルダ __construct が自動的に選択されます (2)。ほかに編集する値はありません。もう一度 Enter キーを押すと、テンプレートのテキストで ${cursor} によって指示される位置にカーソルが移動します (3)。

プレースホルダ名から ${cursor} の位置へのカーソル位置の変化を示す 3 つのコードスニペット

ヒントによって定義されるパラメータ


パラメータは、すべて大文字の任意の記述名と 1 つ以上のヒントで構成できます。


${PARAMETER_NAME hint1[=value] [hint2...hint n]}

名前はコード内のどこにも出現しません。ただしこの名前は、コードテンプレート内でパラメータを 2 回以上使用する場合に役立ちます。パラメータは初回のみ定義する必要があり、2 回目以降は名前によってそのパラメータを参照できます。たとえば次のコードテンプレートで、パラメータ ${CONLINK} は最初に一度だけ定義され、以後の 2 回はその名前によって参照されます。


$$${CONLINK newVarName default="link"} = mysql_connect('localhost', 'mysql_user', 'mysql_password');  
if (!$$${CONLINK}) {
    die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
mysql_close($$${CONLINK});
${cursor}

ヒントは、IDE でコードテンプレートが展開されるときにテンプレートパラメータの値を計算するために参照されます。たとえば、このチュートリアルの「コードをテンプレートで囲む」の節で使用される if(true) テンプレートを見てみましょう。このテンプレートの展開されたテキストは次のとおりです。

if (${CONDITION variableFromPreviousAssignment instanceof="boolean" default="true"}) {
${selection}${cursor}
}

パラメータ ${CONDITION variableFromPreviousAssignment instanceof="boolean" default="true"} に注目してください。このパラメータは if 文の条件を設定します。したがって、パラメータの名前は CONDITION です。最初のヒントは variableFromPreviousAssignment で、2 番目のヒントは instanceof="boolean" です。これら 2 つのヒントを組み合わせて、コード内で割り当て済みであり、コードテンプレートよりも前のもっとも近い位置にあるブール型の値を探すよう IDE に指示します。3 番目のヒント default="true" を追加して、「先に出現する最も近いブール型変数の値が true の場合」という条件をパラメータで設定します。

たとえば、次のコードスニペットの「$b = 10」の行を if(true) コードテンプレートで囲みます。

スニペット $a = false $b = 10

IDE では、これよりも前のもっとも近い位置で割り当てられたブール型変数として $a が検出され、$a[=true] という条件で if 文が生成されます。条件が編集のために自動的に選択されるので、PHP プログラマは $a を別の変数または !$a に変更できます。

「if $a=true then $b=10」に展開されたテンプレートで条件「$a=true」が編集のために選択された状態

次の表は、PHP コードテンプレートで使用されるヒントの一覧と各ヒントの説明です。

ヒント 説明
newVarName パラメータ値は未使用の変数名である必要があります。通常は default とともに使用します。
default="" パラメータのデフォルト値。
instanceof="" パラメータで定義される PHP 変数の型。
variableFromPreviousAssignment パラメータ値は先に割り当てられたもっとも近い変数です。通常は instanceof および default とともに使用します。
variableFromNextAssignmentName パラメータ値はコードテンプレートよりもあとに割り当てられたもっとも近い変数の名前です。通常は default とともに使用します。
variableFromNextAssignmentType パラメータ値はコードテンプレートよりもあとに割り当てられたもっとも近い変数の型です。通常は default とともに使用します。
editable=false テンプレートの展開後にパラメータ値を編集できません。

事前定義済みパラメータ

NetBeans には、コードテンプレートの作成時に使用できるいくつかの定義済みパラメータが用意されています。追加のパラメータをテンプレートマネージャーで事前定義できます。${date} 変数の形式変更に関する特殊なルールにも注意してください。

  • ${date} は現在の日付を挿入します。形式は、「Feb 16, 2008」のようになります。
  • ${encoding} は UTF-8 のようなデフォルトのエンコーディングを挿入します。
  • ${name} はファイルの名前を挿入します。
  • ${nameAndExt} はファイルの名前を拡張子付きで挿入します。
  • ${package} はファイルが作成された Java パッケージの名前を挿入します。(Java のみ)
  • ${time} は現在の時刻を挿入します。形式は、「7:37:58 PM」のようになります。
  • ${project.license} (「CDDL」などの) 値に基づいてライセンスヘッダーが検出され、テンプレートに挿入されます。
  • ${project.name} はプロジェクト名を挿入します。
  • ${project.displayName} はプロジェクトの表示名を挿入します。

パラメータ定義の追加

追加のパラメータをテンプレートマネージャーで定義できます。

パラメータを定義する

  1. IDE のメニューバーで「ツール」>「テンプレート」を選択します。テンプレートマネージャーが開きます。
    User.properties の位置を示すテンプレートマネージャー
  2. 「その他」カテゴリを展開します。「プロパティー」をダブルクリックします。User.properties ファイルがエディタで開きます。
  3. パラメータを定義します。たとえば、作成するテンプレートに自分の名前を追加するための ${user} パラメータを定義します。構文は次のとおりです。
    user=LorumIpsum@mycompany.com

    コードテンプレートを展開すると、そのテンプレート内に出現する ${user} はすべて「LorumIpsum@mycompany.com」に置き換えられます。

  4. name=value の構文を使用して、必要な数だけ追加のパラメータを追加します。

パラメータ定義は、Java のテンプレート言語である FreeMaker の構文に従います。詳細は、NetBeans wiki の FreeMaker に関するページを参照してください。

${date} パラメータの書式設定

${date} 変数は String 型であり、Date 型ではありません。${date} の形式を変更するためには、この変数を Date 型にキャストする必要があります。たとえば、年のみを表示するには、コードテンプレートで次のように入力します。

${date?date?string("yyyy")} 

独自のコードテンプレートの作成

NetBeans IDE で独自のコードテンプレートを作成できます。この節では、コードテンプレートの作成方法を説明し、その構文を解説し、作成すると役立ついくつかのテンプレートを提示します。

コードテンプレートを作成する

  1. 「ツール」>「オプション」(Mac では「NetBeans」>「環境設定」) を開き、「エディタ」機能を選択し、「コードテンプレート」タブを選択します。
    「オプション」ウィンドウで PHP コードの cli テンプレートを選択した状態
  2. テンプレートの表の右側にある「新規」ボタンをクリックします。「新規コードテンプレート」ダイアログが開きます。テンプレートの省略名を入力して「OK」をクリックします。
    「新規コードテンプレート」ダイアログでのテンプレート省略名の入力
  3. コードテンプレートの表に新しい行が追加されます。この行の内容は、指定したばかりの省略名だけです。IDE で「展開されるテキスト」タブにカーソルが自動的に移動します。テンプレートのコードの入力をすぐに開始できます。

    注: コードテンプレートの展開されるテキストの構文については、「PHP コードテンプレートの構文」の節を参照してください。

    新しい abb テンプレートの展開されるテキストの入力

以降の節では、独自の PHP コードテンプレートを作成するためのユースケースをいくつか紹介します。新しく提案するユースケースがあれば、PHP ユーザーフォーラムのコミュニティにぜひ投稿してください。

ユースケース: HTML への PHP の挿入

PHP スニペットを頻繁に HTML ブロックに挿入する場合、<?php ?> を何度も入力せずに PHP を挿入する HTML コードテンプレートを作成できます。

次のコードテンプレートは、PHP の echo 文を HTML に挿入します。

言語: HTML
省略名: php
展開されるテキスト:
<?php echo ${cursor}   ?>

「オプション」ウィンドウでの新規「php」HTML テンプレートの表示

ユースケース: Joomla

コードテンプレートは、NetBeans IDE で PHP フレームワーク (特に、サポートが組み込まれていないフレームワーク) を使用する祭に役立ちます。次に示すのは、Joomla とともに使用するためにあるユーザーが開発したコードテンプレートです。

言語: PHP
省略名: joomdef
展開されるテキスト:
defined('_JEXEC')
or die('Restricted access');
${cursor}

「オプション」ダイアログでの新規 joomdef コードテンプレート

ユースケース: MySQL 接続

PHP 開発者はしばしば、MySQL データベースへの接続を作成する必要があります。このコードテンプレートは自動的に接続を作成します。MySQL 接続に割り当てられる変数のプレースホルダ名は link です。「三重の」ドル記号 $$$ の使い方に注意してください。これは、展開すると 1 つのドル記号になる二重のドル記号に変数名のパラメータを続けたものです。

言語: PHP
省略名: my_con
展開されるテキスト:
$$${CONLINK newVarName default="link"} = mysql_connect('localhost', 'mysql_user', 'mysql_password');  
if (!$$${CONLINK}) {
    die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
mysql_close($$${CONLINK});
${cursor}

MySQL 接続の新しいコードテンプレート

ユースケース: Zend コントローラでのアクション

NetBeans のウィザードを使用してアクションを作成する代わりに、コードテンプレートを使用して、indexController{} などの Zend Framework コントローラのアクションを挿入することができます。

言語: PHP
省略名: zf_act
展開されるテキスト:
public function ${functionName}Action () {
${selection}${cursor}
}

新規の Zend アクションコードテンプレート

ユースケース: Zend フォーム要素

このテンプレートは Zend フォームに要素を挿入します。このテンプレートは、Zend の create form <name> コマンドを呼び出してフォームを生成したあとに使用します。

言語: PHP
省略名: zf_element
展開されるテキスト:
$$${ELEMENT newVarName default="element"} = new Zend_Form_Element_Submit('submit', array('label' => 'Send data to server'));  
$$this->addElement($$${ELEMENT});
${cursor}
ZF フォームに挿入する Zend Framework 要素の新規コードテンプレート

 


関連項目

netbeans.org での PHP テクノロジについての詳細は、次のリソースを参照してください。

メーリングリストに登録することによって、NetBeans IDE PHP 開発機能に関するご意見やご提案を送信したり、サポートを受けたり、最新の開発情報を入手したりできます。