Project Templates in PhpStorm 2016.2

Often in web development, we want to start a new project from a skeleton application that has all the scaffolding we need to get quickly started with coding. PhpStorm bundles with some of these templates, but in 2016.2 we’ve added the ability to create your own project templates.

To create a new Project Template, from the project you wish to save as a future starting point, navigate to the Tools drop-down menu, and select Save Project as Template…


I’m creating a new template based on the skeleton application for Zend Framework 3, so I’ve named my project accordingly.

Now, any time I want to create a new ZF3 project from the template I just created, I can select File from the drop-down menu, and then select New Project... I will see any custom projects I’ve saved under the User-defined section in the left-hand pane.


You can remove and manage project templates using the Manage Project Templates… option in the Tools menu.

Having your own custom starting points should help to make getting started on new applications quicker and easier. If you can’t use the composer create-project command for any reason – just don’t forget to run a composer update before you get started.

 – Gary and the PhpStorm Team

About Gary Hockin

Gary Hockin has been creating code to power web applications for 15 years, the last three of them at an extraordinary level. He is handsome, talented, funny and articulate, and also extremely modest. Gary is a valued contributor to Zend Framework 2 and is a member of the community review team. He's married and has two wonderful children, and when he's not coding, writing about code, speaking about code or reading about code, he can usually be found in the pub playing pool.
This entry was posted in Cool Feature and tagged , , , . Bookmark the permalink.
  • Lasse Rafn

    Interesting! I can’t wait to move my Boilerplates to PhpStorm instead of using git clone every time :o)

  • Eoler

    Does this work with project settings (scopes, watches etc.) – if they use parametrized values, of course?