Phpstorm Bootstrap



Here are some hints and examples, what you can do to setup PhpStorm.

Conventions on this page¶

If you need to select something from the menu in PhpStorm, menu itemsare displayed like this: File > Settings > ….

PhpStorm 2020.3 is now available with full support for all new PHP 8 features, Psalm and PHPStan support, Xdebug 3, Code With Me, and Tailwind CSS. If you prefer visuals, check out this video highlighting what’s available in PhpStorm 2020.3. To install the plugin open your editor (WebStorm or PHPStorm) and hit: File Settings Plugins and click on the Browse repositories button. Search for Bootstrap then right click and select Download plugin. Finally hit the Apply button, agree to restart your IDE and you're all done!

General setup¶

File > Settings > Languages & Frameworks > PHP

(ctrl + alt + s opens File > Settings)

  • PHPLanguageLevel: choose appropriate version
  • CLIInterpreter: choose appropriate version

Coding Guidelines¶

PHP Storm live templates based on Bootstrap 3.0.

Make sure your IDE is setup properly to comply with theCoding Guidelines for TYPO3 (CGL).

EditorConfig¶

Please note that there is an.editorconfigfile in the TYPO3 core repository.See http://EditorConfig.org for more information. Use the EditorConfig plugin for PhpStorm.

If you use the .editorconfig file (which is included in the TYPO3 core), somestandard formatting rules are already setup automatically (e.g. indent with4 spaces for PHP files).

However, the rules defined in .editorconfig are very minimal, so atleast set up PhpStorm to comply with PSR-1 / PSR-2 for PHP as described next.

PHP files¶

Set Predefined Style in PhpStorm:File > Settings > Editor > Code Style > PHP > Set From > Predefined Style

Choose PSR-1 / PSR-2

Phpstorm

In order to test this, use Code:ReformatCode to reformat a PHP file.

More information¶

You can find more information on the Coding Guidelines section in the Appendix.

Plugins for PhpStorm¶

Here are some plugins, you might use when developing TYPO3. DynamicReturnTypePluginand Php Inspections are not TYPO3 specific, but will show possible errors andare strongly recommended when developing for the TYPO3 core.

Hint

None of these plugins are mandatory, check out what might be useful for yourself!

Install plugins in PhpStorm¶

  1. Open Settings: File > Settings (ctrl + alt + s)
  2. Select Plugins
  3. Start typing name of plugin and select a match
  4. Click on Install.

Recommended Plugins¶

  • DynamicReturnTypePlugin :With this Plugin, return types for some functions can be configureddynamically. For example, if you use GeneralUtility::makeInstance,the expected return type is determined from the first parameterpassed to the function. The configuration file for this plugin isdynamicReturnTypeMeta.json
  • Php Inspections (EA Extended) :Static Code Analysis tool for PHP
  • reStructuredText plugin:This will show you errors in your reStructuredText files (file ending .rst)when you are editing the core changelog or are updating the documentationfor a system extension.

Optional Plugins¶

  • Fluid plugin(sgalinski)
  • TypoScript plugin (sgalinski)

Setting up PhpStorm for the Testing Framework¶

First setup the Testing Framework. Replace <YOUR_WEBROOT> with your pathto the web directory. You must use absolutepaths for this.

Setup Test Frameworks in PhpStorm:File > Settings > Languages & Frameworks > PHP: Test Frameworks:

(ctrl + alt + s opens File > Settings)

  • Use composer autoloader
  • Pathtoscript: <YOUR_WEBROOT>/vendor/autoload.php
  • Test runner: Defaut configuration file:<YOUR_WEBROOT>/vendor/typo3/testing-framework/Resources/Core/Build/UnitTests.xml
  • Test Runner: Default bootstrap file:<YOUR_WEBROOT>/vendor/typo3/testing-framework/Resource/Core/Build/UnitTestsBootstrap.php

If this is setup correctly, it will be possible to run your unit testsfrom within the IDE.

Other Resources¶

Phpstorm Phpunit Bootstrap File

  • Susanne Moog: “PhpStorm—a Short Review” (on typo3.org, 17th April, 2019)
FeaturesNewsletter

We call PhpStorm “an IDE that actually ‘gets’ your code,” meaning that it provides completion, type inference, inspection, documentation pop-ups, and a lot more coding assistance.

For all the Standard PHP Library components as well as for common extensions, this functionality is based on PHP stubs. Stubs are normal, syntactically correct PHP files that contain annotated function, method, and class signatures, constant definitions, and so on. The coding assistance quality relies, apart from anything else, on the quality of these signatures and their PHPDoc @annotations provided in the stubs.

In this post, we’ll take a look at the bundled PHP stubs, learn how to get started with your own stubs, and even create a plugin that will attach an arbitrary stubs set to any PhpStorm project.

Viewing the bundled PHP stubs

To get an overview of what stubs are, take a look at the ones bundled with PhpStorm.

In the Project view, expand the PHP Runtime node under External Libraries and locate the bundled stubs under PHP Runtime:

While you can open any of these files in the editor to view their contents, modifying them directly is not possible. PhpStorm displays a warning message at the top of the editor panel to act as a reminder:

Obtaining stubs

So, you’ve identified an issue with an existing stub, and want to address it. Or you’ve created your own stub from scratch. Good news: PhpStorm stubs are open source! They are hosted on GitHub, and from there they ultimately find their way into the PhpStorm distribution.

To get started with your own stubs, click the Clone on Github link at the top of the editor panel, which will take you to the stubs repository page.

While you can simply download a copy of the PHP stubs package, it will be more effective to clone this project so that everything is set up properly from the very beginning. To do so, make sure to register your GitHub account credentials in PhpStorm first.

Next, follow these steps:

  1. Fork the stubs repository. You may want to refer to this GitHub article for more details on how to do it.
  2. Copy your forked repository URL to clipboard:
  3. In PhpStorm, start a new project by cloning a GitHub repository. Choose VCS | Checkout from Version Control | Git and provide the repository URL:
  4. Click Clone.

After PhpStorm fetches everything, the PHP stubs project clone will be at your full disposal: you can now edit stubs or create your own ones.

Using custom stubs

Let’s say you’ve decided to follow PSR-7 and rely on RequestInterface instead of using the $_GET and $_POST superglobals. As a result, you’ve added the corresponding @deprecated annotations for these variables in the _superglobals.php stub.

When you are finished with your edits, you may want to appoint the modified stubs to be used by PhpStorm instead of the bundled ones. To do this, navigate to Settings | Languages & Frameworks | PHP.

On the PHP Runtime tab, you can view the list of the currently loaded stubs and enable only the stubs that you actually need. You can also quickly pick out the stubs that match the currently loaded set of PHP extensions by clicking Sync Extensions with Interpreter.

To switch to a different stubs set, provide the path to the stubs folder under Advanced settings:

Now, when you invoke code completion, the variables that you’ve marked as deprecated will be displayed crossed out:

When using custom stubs, do not forget to periodically pull the most recent version from our repository so that you are up-to-date with the latest changes. This GitHub article will provide you with the information for properly updating your fork.

Sharing stubs

You are always welcome to share your stubs with the PhpStorm community!

To do this, push the changes to your remote repository via PhpStorm. Then, create a pull request to the original repository, as described here. We’ll look into your request and merge it into the distribution as soon as possible.

There are a couple of considerations to keep in mind:

  • Technical: stubs need to include the complete PHPDoc, especially the proper @return and @since annotations.
  • Legal: if you’ve created stubs based on some publicly available information source (e.g. you’ve transformed the official publicly available documentation to the appropriate form), make sure to provide the link to this information source together with your stubs.

When in doubt, refer to our contribution guide.

Creating External Libraries

A lot of the popular PHP frameworks’ code is covered with stubs, too, which serve for aiding IDEs with code completion and inspection. These stubs are commonly open-source and can be easily obtained online. You may want to package them into an External Library: the files will be explicitly added to the project’s index to provide coding assistance. Note, however, that they are not meant to be edited in the scope of a project.

To streamline the creation of a custom external library, use the PhpStorm Library Plugin. Follow the provided instructions, and you will be good to go in no time.

Phpstorm Bootstrap Project

As an example, let us create a plugin that will provide us with coding assistance for the Phalcon PHP framework:

  1. Download the Phalcon stubs package and the PhpStorm Library Plugin from GitHub.
  2. Replace the plugin’s library example folder with the src/Phalcon stubs folder.
  3. Review the plugin.xml file under META-INF: at the very least, you need set the proper plugin name and the library root folder.
  4. Package the contents of the Plugin folder by running
  5. In PhpStorm, navigate to Settings | Plugins, and install the plugin from disk as you would do with any other third-party plugin.
  6. Restart the IDE.

Phpstorm Bootstrap

That’s it! In the Project view, your library is now available under External Libraries. The contents of your library, in turn, is used to provide coding assistance to any PhpStorm project:

Phpstorm Bootstrap Live Templates

And of course, if you feel that the plugin is worth sharing, please feel free to upload it to the plugins directory. Every contribution counts, and helps to make PhpStorm better for everybody.

Phpstorm Bootstrap 5

Your JetBrains PhpStorm Team
The Drive to Develop