PhpStorm 2017.2 Help

Language Injection Settings: Generic PHP

File | Settings | Language Injection - Generic PHP for Windows and Linux
PhpStorm | Preferences | Language Injection - Generic PHP for macOS


The dialog box opens when you click add.png   in the Language Injection page, and choose Generic PHP on the context menu, or select an entry and click edit1.

PhpStorm comes with a set of predefined injection configurations which is quite sufficient to ensure high productivity and comfortable environment. Therefore it is strongly recommended that you use the predefined injection configurations and avoid creating new ones.

Name The name of the injection.
Language The language to be injected.
  • ID. The language ID or name.
  • Prefix. A sequence of characters to be added before the corresponding string value.
  • Suffix. A sequence of characters to be added after the corresponding string value.

The prefix and suffix are optional. For more info, see Using language injection prefixes and suffixes.

Places Pattern In this text box, type the rules that define the context where you want PhpStorm recognize literals as injections.

The rules are built from Program Structure Interface Patterns and are actually chained calls of methods of an internal PhpStorm language. The Program Structure Interface shows the structure of a file as PhpStorm treats it.

These rules are PhpStorm internals, and it is strongly recommended that you use the predefined injection configurations and avoid creating new ones.

Advanced In this area, specify additional settings to narrow the context where the injection is applicable and thus to enable more fine-grained control over the injection process.
  • Value pattern - in this text box, type a regular expression that determines the context to inject the language into. By using the first capturing group of the pattern as the target for injection, you can configure the procedure to have the language injected only into values that match a certain pattern or into multiple parts that match the pattern. For example, ^javascript:(.*) matches the javascript protocol that can be used in hyperlink-hrefs to execute JavaScript code.
    • Single file - If the option is off, the fragments that match the value pattern are treated separately, as different "files" - e.g. from the fragment editor's viewpoint.
      If the option is on, the corresponding fragments are all merged together to form a single unit, or "file".
      Given the value pattern
      xxx (.+) yyy (.+) zzz
      and the fragment
      xxx select * yyy from family zzz,
      select * and from family are treated as two independent fragments (or "files") if the option is off. If the option is on, select * from family is treated as a single unit or "file".
Last modified: 28 November 2017

See Also