适用于 PHP 的 NetBeans IDE 中的代码模板

This tutorial needs a review. You can open a JIRA issue, or edit it in GitHub following these contribution guidelines.

代码模板是 NetBeans IDE 提供的预先编写的代码片段。可以使用代码完成或使用模板缩写并按 Tab 键,将代码片段粘贴到您的代码中。也可以将您的代码包含在相应的 PHP 代码片段中。最后,您可以定义自己的代码模板。本教程介绍了如何使用代码模板,并建议了定义您自己的代码模板的用例。

要学完本教程,您需要具备以下软件和资源。

软件或资源 要求的版本

NetBeans IDE

PHP 下载包

Java 开发工具包 (JDK)

7 或 8

 

定义的 PHP 代码模板

要查看在 NetBeans 中定义的代码模板,请打开 "Tools"(工具)> "Options"(选项)(在 Mac 上为 "NetBeans" > "Preferences"(首选项)),选择 "Editor"(编辑器)功能,然后选择 "Code Templates"(代码模板)标签。要查看 PHP 代码模板,请在 "Languages"(语言)下拉列表中选择 "PHP"。将显示一个表,其中包含代码模板缩写和展开的文本。如果在该表中选择一个代码模板,将在 "Expanded Text"(展开的文本)标签中显示它的展开文本。

code template options

在该图中,选择了新类 ( cls) 代码模板,您可以在 "Expanded Text"(展开的文本)标签中看到该模板展开后的内容。在下一节中,将使用 Tab 功能在代码中展开该模板。

PHP 代码模板语法部分讲述了新类 ( cls ) 代码模板的语法。

使用 PHP 代码模板

可以使用三种方法在 PHP 代码中插入代码模板。每种插入代码模板的方法适用于不同的情况。插入代码模板的三种方法是:

在插入模板后,IDE 可帮助您在展开的模板代码中编辑参数

使用缩写 + Tab 键展开代码模板

再次查看 "Options"(选项)对话框中的 "Code Templates"(代码模板)标签。底部有一个下拉字段,用于选择 "Expand Template On"(展开模板)组合键。这是在键入代码模板缩写后按下的组合键,以便展开代码模板。默认情况下,将选择 Tab 键,但您可以选择其他组合键。

expand template on

本节的其余部分假定在 "Expand Template on:"(展开模板:)字段中选择了默认 Tab 键。

如果模板缩写也是代码完成关键字的一部分,则可能很难展开该缩写。在这种情况下,使用代码完成插入模板会更容易一些。

要使用缩写 + Tab 键展开新类代码模板,请执行以下操作:

  1. 创建一个空 PHP 文件。

  2. 在该文件的 PHP 块中,键入 cls ,然后按 Tab 键。将展开 cls 代码模板。

应正确拼写缩写!如果拼错缩写,将无法展开缩写。
expanding template with abb
  1. 将自动选择占位符类名 ( class_name )。按 Tab 键可在占位符之间移动。您可以立即键入所需的类名,该名称将覆盖占位符。在完成后,按 Enter 键,IDE 将选择第一个函数的名称,此处为构造函数。

占位符名称部分详细讲述了占位符名称。
select constructor name
  1. 编辑函数名称或接受默认值。再次按 Enter 键,光标将移到函数主体内部。在实际情况下,您现在将开始对函数和类的其余部分进行编码。

最终的光标位置是由 ${cursor} 参数决定的。保留的名称部分中介绍了该参数。

使用代码完成插入代码模板

要使用代码完成插入代码模板,请键入展开的代码片段的开头(而_不是_模板缩写)。此时将打开 "code completion"(代码完成)对话框,其中显示了代码片段。

使用代码完成插入新类代码模板:

  1. 在 PHP 文件的 PHP 块中,键入 cla

  2. 等待 "code completion"(代码完成)对话框打开。

  3. 找到新类模板,将列出该模板的缩写 ( cls )。PHPDoc 框架显示了展开的模板。

insert template with cc
  1. 选择新的类模板并按 Enter 键。IDE 将在代码中插入该模板。

  2. 将自动选择占位符类名 ( class_name )。按 Tab 键可在占位符之间移动。您可以立即键入所需的类名,该名称将覆盖占位符。在完成后,按 Enter 键,IDE 将选择第一个函数的名称,此处为构造函数。

select constructor name
  1. 编辑函数名称或接受默认值。再次按 Enter 键,光标将移到函数主体内部。在实际情况下,您现在将开始对函数和类的其余部分进行编码。

将代码包含在模板中

您可以将代码包含在以下 PHP 模板中:

  • while

  • do

  • switch

  • if / elseif

  • try & catch

  • foreach

  • for

  • ob_start & ob_end_clean

此外,您也可以创建新模板,如果该模板包括 allowSurround 参数提示,则可以包含代码。(感谢“我喜爱的 PHP”博客。)

要将代码包含在模板中,请选择代码,然后打开 "Surround with…​"(包含方式…​)对话框。要打开 "Surround with…​"(包含方式…​)对话框,请按 Alt-Enter 组合键或者单击 "Hint"(提示)hint icon 图标。

将代码包含在 if(true) 模板中:

  1. 使用变量 $a = true$b = 10 创建一个 PHP 块。

<?php$a = false;$b = 10;?>
  1. 选择行 $b = 10;

selected variable
  1. 单击 "Hint"(提示)hint icon 图标或按 Alt-Enter 组合键。此时将打开 "Surround with…​"(包含方式…​)对话框。

surround hint
  1. 单击 Surround with if{true){…​ (包含在 if{true){…​ 中)

surround if true
  1. IDE 将 $b = 10; 行包含在 if(true){…​ 模板中。

inserted if true

IDE 自动插入前面最近的适合变量作为 if 语句的条件。此处,该变量是 $a ,这是因为 $a 是布尔型变量,并且 if(true){} 语句将布尔型变量作为其条件。再者,如果 IDE 插入到条件中的变量不是正确的变量,则会自动选择该条件以进行编辑。这意味着,您可以在插入模板后立即开始键入正确的变量。在这种情况下,代码完成可以帮助您选择正确的变量。

提示定义的参数部分详细介绍了 if(true){} 模板。
change condition

按 Enter 键以退出语句的条件。光标将移到相应的位置,此处为 $b = 10; 行的末尾。您可以编辑条件并按 Enter 键,或者接受自动插入的条件并按 Enter 键。对于这两种情况,光标将退出条件并移到相应的位置。

cursor after not editing
cursor after editing

下一节包含在展开的模板中编辑参数的详细信息。

在展开的模板中编辑参数

在介绍将模板插入到代码的部分中,您了解了在展开新类模板时 IDE 如何自动选择类名以进行编辑,以及在展开 if(true) 模板时 IDE 如何自动选择条件名称以进行编辑。现在,您将了解 IDE 帮助您在展开的模板中编辑参数的一些其他方法。

同时编辑参数的多个实例:

  1. 在一个空 PHP 块中,键入 for ,然后按 Ctrl-空格键以打开代码完成。选择迭代模板(缩写为 iter ),然后按 Enter 键。将在代码中插入一个新迭代。

iter cc
  1. 迭代将以下两个变量作为参数: $index$array 。将自动选择 $index 以进行编辑。(按 Tab 键可在参数之间移动。)

iteration1

键入 i$index 的所有三个实例将变为 $i

iteration2
  1. 按 Enter 或 Tab 键。将选择 $array 参数。

  2. 按 Enter 键。光标将进入迭代的方法主体。

通过使用 NetBeans 中的变量名称重构功能,您只需编辑变量名称的一个实例即可更改它的所有实例。由此看出,在应用于模板参数时,该功能是多么有用!

NetBeans IDE PHP 编辑器也可以帮助确定变量的正确方法。

将模板中的变量与正确的方法相关联:

  1. 在一个空 PHP 块中,键入以下代码:

<?php$arr = array(new ArrayIterator($array()), new ArrayObject($array()));?>
  1. 在声明 $arr 数组的行后面,键入 fore ,然后使用代码完成插入 foreach 模板(缩写为 fore )。

cc foreach
  1. 将光标放在 foreach 函数主体中(可以按两次 Enter 键以将光标移到此处)并键入 $value ,或者仅键入 $ 并从代码完成中选择 $value

<?php$arr = array(new ArrayIterator($array()), new ArrayObject($array()));foreach ($arr as $value) {$value}?>
  1. $value 后面,键入 。代码完成为您提供了 $value 变量的正确方法,该变量是从 $arr 数组派生的。

value method cc

PHP 代码模板语法

NetBeans IDE 为支持的所有语言提供了代码模板。某些语法适用于所有语言。其他语法是某种语言特有的。在本节中,您将了解最相关的通用模板语法以及 PHP 模板特有的语法。

PHP 代码模板可以包含 PHP 代码和模板参数。PHP 模板可以仅包含 PHP 代码,仅包含参数或同时包含代码和参数。

代码模板参数语法是美元符号 $ ,后跟用花括号 {…​} 括起来的参数定义。在该语法中,模板参数采用以下四种形式之一:

以下几节讲述了每种形式的代码模板参数。

${VARIABLE...} `` 有时,您会在 PHP 代码模板中看到语法似乎为三个美元符号,后跟花括号 ``${…​} 。在这种情况下,代码模板包含变量及其名称。此处的语法是转义的美元符号,记为两个美元符号 `` ,后跟变量名称参数 ``${VARIABLE...}`` 。例如, ``catch ${Exception} ${exc} 代码模板展开为 [examplecode]# catch Exception $exc #。

占位符名称

在最简单的情况下,代码模板参数是一个任意占位符值。在展开模板时,IDE 选择该占位符名称以进行编辑。

例如,请考虑本教程的定义的 PHP 模板使用缩写 + Tab 键展开代码模板部分中介绍的新类模板 (cls) 。新类模板的展开文本以 class ${className} 开头。此处, class 一词是 PHP 代码, ${className} 是一个参数。该参数只是类名的任意占位符值。当 IDE 展开模板时, ${className} 将变为 class_name 。IDE 知道 class_name 只是一个占位符值,因此,自动选择该值以进行编辑。

expanding template with abb

保留的名称

IDE 保留两个参数名称以作为操作指令。

  • ${cursor} 定义在展开的模板中编辑完所有自动选择的值后的光标位置。

  • ${selection} 定义编辑器选择内容的粘贴位置。只要用户在编辑器中选择文本,所谓的“选择模板”(显示为提示)就会使用该参数。如果模板包含 ${selection} ,它通常指与 ${cursor} 相同的位置。

例如,请再次考虑本教程的定义的 PHP 模板使用缩写 + Tab 键展开代码模板部分中介绍的新类模板 (cls) 。它包含 ${ClassName}$__construct 这两个占位符名称参数。在函数体中,它具有参数 ${cursor}${selection}

class ${ClassName} {function ${__construct} {${selection}${cursor}}}

在展开模板后,将自动选择 class_name 占位符 (1)。按 Enter 键,将自动选择 __construct 占位符 (2)。没有要编辑的其他值。再次按 Enter 键,光标将移到模板文本中的 ${cursor} 指示的位置 (3)。

cursor position changes

提示定义的参数

参数可以包含一个全部大写的任意描述性名称以及一个或多个提示。

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

名称不会显示在代码中的任意位置。不过,如果要在代码模板中多次使用参数,这是非常有用的。您只需第一次定义参数,以后按名称引用该参数即可。例如,在下面的代码模板中,仅第一次定义了 ${CONLINK} 参数,以后两次按名称引用该参数。

$$${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 展代码模板时,提示可帮助 IDE 计算模板参数的值。例如,请查看 if(true) 模板,本教程的将代码包含在模板中部分中使用了该模板。该模板的展开文本是

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

查看 ${CONDITION variableFromPreviousAssignment instanceof="boolean" default="true"} 参数。该参数设置 if 语句的条件。因此,该参数命名为 CONDITION。第一个提示是 variableFromPreviousAssignment ,第二个提示是 instanceof="boolean" 。这两个提示共同指示 IDE 在代码模板前面的代码中查找指定的最接近布尔型变量。请添加第三个提示 default="true" ,该参数将条件设置为“如果前面的最接近布尔型变量值为 true”。

例如,如果将以下代码片段中的 $b = 10 行包含在 if(true) 代码模板中…​

selected variable

…​IDE 将查找以前指定的最接近布尔型变量,结果找到了 $a ,并使用 $a [=true] 条件生成一个 if 语句。将自动选择该条件以进行编辑,因此,PHP 程序员可以将 $a 更改为其他变量或 !$a

inserted if true

下表列出了 PHP 代码模板中使用的提示以及提示说明。

提示 描述

newVarName

参数值应该为全新的未使用变量名称。通常与 default 一起使用。

default=""

参数的默认值。

instanceof=""

参数中定义的 PHP 变量类型。

variableFromPreviousAssignment

参数值是以前指定的最接近变量。通常与 instanceofdefault 一起使用。

variableFromNextAssignmentName

参数值是在代码模板后面指定的最接近变量的名称。通常与 default 一起使用。

variableFromNextAssignmentType

参数值是在代码模板后面指定的最接近变量的类型。通常与 default 一起使用。

editable=false

在展开模板后,无法编辑参数值。

allowSurround

允许使用模板包含代码

创建您自己的代码模板

可以在 NetBeans IDE 中创建您自己的代码模板。本节介绍了如何创建代码模板,讲述了其语法并建议了一些可创建的有用模板。

创建代码模板:

  1. 打开 "Tools"(工具)> "Options"(选项)(在 Mac 上为 "NetBeans" > "Preferences"(首选项)),选择 "Editor"(编辑器)功能,然后选择 "Code Templates"(代码模板)标签。

code template options
  1. 单击 "New"(新建)以打开 "New Code Template"(新建代码模板)对话框。键入所需的模板缩写,然后单击 "OK"(确定)。

new abb
  1. 将在代码模板表中添加一个新行。该行仅包含您提供的缩写。光标位于 "Expanded Text"(展开的文本)标签中,IDE 自动将光标放在该位置。您可以立即开始键入模板的代码。

要了解代码模板的展开文本的语法,请参见 PHP 代码模板语法部分。
new abb text

以下几节介绍了创建您自己的 PHP 代码模板的一些用例。如果您要建议任何其他用例,请在 PHP 用户论坛中与社区用户进行分享。

用例:将 PHP 插入到 HTML 中

如果经常将 PHP 代码片段插入到 HTML 块中,您可以创建一个 HTML 代码模板以插入 PHP,而无需反复键入 <?php ?>

以下代码模板将 PHP echo 语句插入到 HTML 中。

语言: HTML

缩写:

php

展开的文本:

[source,php] ----

<?php echo ${cursor}  ?> ----

uc php

用例:Joomla

代码模板可帮助您在 NetBeans IDE 中使用 PHP 框架,尤其是没有内置支持的框架。下面是一个用户开发的代码模板,以便与 Joomla 一起使用。

语言: PHP

缩写:

joomdef

展开的文本:

[source,php] ----

defined('_JEXEC')or die('Restricted access');${cursor} ----

uc joomdef

用例:MySQL 连接

PHP 开发者经常需要创建到 MySQL 数据库的连接。该代码模板将为您创建一个连接。指定给 MySQL 连接的变量具有占位符名称 link 。请注意使用了三个美元符号 $$$  — 实际上是两个美元符号(在展开时生成单个美元符号),后跟变量名称的参数。

语言: PHP

缩写:

my_con

展开的文本:

[source,php] ----

${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} ----

uc mycon

用例:Zend 控制器中的操作

您可以使用代码模板在 Zend 框架控制器中插入操作(如 indexController{} ),而不是使用 NetBeans 向导创建操作。

语言: PHP

缩写:

zf_act

展开的文本:

[source,php] ----

public function ${functionName}Action () {${selection}${cursor} } ----

uc zfact

用例:Zend 窗体元素

该模板在 Zend 窗体中插入元素。在调用 Zend create form <name> 命令以生成窗体后,请使用该模板。

语言: PHP

缩写:

zf_element

展开的文本:

[source,php] ----

${ELEMENT newVarName default="element"} = new Zend_Form_Element_Submit('submit', array('label' => 'Send data to server')); this→addElement($$${ELEMENT}); ${cursor} ----

uc zelement

 

另请参见

有关 netbeans.org 上 PHP 技术的更多信息,请参见下面的资源:

要发送意见和建议、获得支持以及随时了解 NetBeans IDE PHP 开发功能的最新开发情况,请加入 users@php.netbeans.org 邮件列表