 Very kind offer. Hello, I'm Michael. You don't really like the front seats, right? The front row. I feel like in school. Come on. I have that habit from long time back. Oh, wow. I have this habit also from school. So it's just Aaron. Aaron means half to sit in the first row just to make it more ergonomical. By the way, he can speak about PHP to get a plushie one other time, because he's with us for three days of our time in Singapore for JetBrains team. So he's listening to our presentation every day, like from the morning till evening, and then also talks in the restaurants. Nice to try to steal it. Yeah, so you will learn it. So I'm Michael. I'm actually in Marxian JetBrains, but it should not scare you because I've been a developer for 10 years before switching to your more like business marketing roles. And I was working on the PHPStorm team as a product manager, working with the team on what's happening there and so on. Now I'm switching to more other strategic stuff, but I'm still in touch with PHPStorm team. So they taught me, what do they have new? And I'm going to show it to you today. Along with some of the tips and tricks, more generic one, not only what's new, but also some useful stuff that you will be able to use in your day-to-day development. So who have you here use PHPStorm already? Raise your hand. OK. So Aaron, you use PHPStorm. Good. Did you pay for your license? No, I'm Aaron. OK, so as the first thing, I want to show you something which is not PHPStorm directly, but it's related. So do you know ToolboxApp? That's an application I've opened right here. Raise your hand if you know ToolboxApp. OK, cool. So you already probably learned something today, because that's the app which helps you manage all the applications from JetBrains, all the desktop tools, in a single application. Well, it's one of the things we ship for free. You don't need to pay for the extras. So you just go here and you can install different tools. So in this case, for example, well, I have two PHPStorms to 018.3, which is because I was using early access program. An early access program is something which we release about two months in advance before the major release of the product. We start releasing those kind of nightly builds every two weeks for PHPStorm, I believe. And you get a grasp of all the features we've introduced there as you use them. So for that, for example, you can use Toolbox to roll back, because sometimes they're not very stable. So right now, PHPStorm is stable. So it's got its release of 018.3, I believe, last week. So I updated to a stable version, but also have the nightly one. And there are all the tools I can manage here. So a couple of things which we have new in the Toolbox app is a way to install updates automatically. So before you would still have to go to your Toolbox and do this installation of their updates. Now you can just do it automatically from here. Just set this setting for your tool, and then it will be updated. Another thing is related to the projects, and here you get a list of your projects and basically see what tool have you used in order to work with this project. For me, I use IntelliJ, PHPStorm, PyCharm, and WebStorm. So for me, it really makes sense to kind of have this high level overview of what tool did I use to open this project. And here you also can add those to fabrics, and they're hide from the Toolbox app. So if you work with three projects, mostly you just add them to fabrics, and then you can manage them from the Toolbox. Okay, let's go to PHPStorm, and before looking into what's new, I wanna show you a couple of good ways to explore what's happening. The first one is located in the menu where nobody ever goes. It's in Help, and it's called Productivity Guide. Do you know about it? Productivity Guide is something very similar to what I'm gonna show you today. It's a collection of tips and tricks which you can learn right from here together with statistics of usage of different tools by the ID. So here, for example, we see, well, I actually don't use PHPStorm that often. I mostly use IntelliJ, but for today's presentation, I'm using PHPStorm. And here I have that, okay, four years ago, I used GoToSymbol, and one week ago, I used recent files pop-up, but I never have been going through recent changes, for example. And it's gonna tell you that you never used it, and you will see information about how to use this feature. So that's very convenient to explore. And also, if you would do it on the Friday evening with your friends or colleagues, then you can also compare how many possible bugs have PHPStorm prevented you from, or from how many typing characters, characters typing, did it prevent you from. Again, it's about productivity, and you can compare with your friends when they're somebody who has the most, does not need to pay for the beer or for the pizza. Okay, so to navigate around the IDE, you probably already know this one, it's, let's move it here. It's DoubleShift, so search everywhere. We have it for quite some time. And by the way, in order not to ask me how it's called or what is their hotkey. In the bottom, we have a PresentationAssist plugin, which is gonna tell you what is their hotkey for Windows Linux because I don't know. So if you use it during the presentations, that might be very convenient for you as well. Just let me show you. Plugins, Presentation, PresentationAssist. So this free plugin basically shows you your hotkey every time you press it in the ID. And by the way, that's our new marketplace or plugins repository right in the ID. We revoked their user interface, and now it gets you featured plugins and their better search which is created on their backend and a lot of other things. So you can find plugins easier here, and you can do all their tagging, for example, with completion, JavaScript, and get very quick results. So we revoked this part. So yeah, I was showing you the search everywhere, and before we had it, but we also had their individual windows and searches for classes, files, symbols, and actions. Now it's all merged into a single search everywhere. So you just start typing. And if you would like to filter by classes, files, symbols, or actions, you basically use tab in order to navigate between those. And in this case, you can find anything everywhere in the ID. So you don't need to use individual dialogues anymore. If you use this navigator file and other actions, you will still be navigating to the dedicated filtering already without need to choose the tab here. And to set the mood, we can set the background. So you know, there are a lot of things in the ID which is hard to find. And there, for that, we created this search everywhere, which basically helps you do a lot of amazing things in the ID. So for example, right now I'm setting a unicorn as a background image. And instead of the unicorn, you can bring pictures of your family, friends, relatives, so that you can stay in the office with your ID longer and don't need to go home, for example. You have pictures of the family, of your spouses, of partners. And for the whole day, you don't need this, like, standing next to your computer. You can just do it here. Aaron, come on. It's recorded. OK, now to distract Aaron, we are going to clear this unicorn and I will just leave this plain background. Nothing happened, Aaron. OK, so I'm showing you a couple of things already. And everything you do in the ID, well, almost everything you can do in the ID, you can do with hotkeys or shortcuts. And by the way, do you know why is it command 1 and where 1 is coming from? 1 is coming from this here. It's 1 next to the project. That's how I know that it's toggling the project tool window. The structure, for example, is 7. So with command 7, I can just toggle this tool window and then close it. So in this case, again, I don't need to touch those with the mouse. So you don't need to use the mouse to navigate. If you want to navigate between tabs, you can use command shift brackets or even better. That's my favorite. It's going through the recent files. Well, let's get more files. OK. So with those, we just go through recent files. And you can also search right in the tool window, the same way it would work in the project. I just start typing TS. And then with the arrow up and arrow down, I can just navigate through those. Very quick search. So another thing which has been produced in their newest version is double control, which states for run anything. So it's basically from the creators of Search Everywhere. Now we have also run anything with double control. They really love those double shortcuts. And with that, you basically can run projects, recent projects, and also run debug configurations. So I can open projects. And in this case, I don't have run debug configurations. If I would have them, I would also be able to just go through them and run. For Maven, Gradle, and so on, they would all basically contribute to this run anything. And you would be able to do it from a single dialogue as well, so you don't need to go around the IDE. Then a few new actions, which are now available in the IDE itself. So this is basically opening the recent projects. Of course, before, you can do something like that. And you get this list. Now you can map it to the shortcut, or just go from here, again, without mouse, and then just open the recent project. And there here, it also gets you to manage their projects, which is basically the welcome screen. So before, we used to have it only on the welcome screen. And their interesting thing here is that we can create project groups. I believe this should not disappear, but it disappears. Still, we can move a couple of demos to the group Singapore. Now we have Singapore demo. So basically, for better organization of your project, if you have a lot, then it would help you to organize those right here, not only from the welcome screen. Then another thing which we've worked quite a lot is related to the color schemes. So now we have cobbled one more. So we have a high contrast theme in the ID. So that basically helps for people with their, for example, color blindness and other challenges or visual challenges. So basically, we worked a lot to introduce this theme into the ID, so it's much easier for them to see what's happening. Because otherwise, for example, if you have a color blindness, you cannot recognize green and red, so using the ID and all the inspection results basically gives you a lot of trouble. So the high contrast theme introduces some special things and special colors so that it's distinguishable and it follows special accessibility guidelines. And in addition to that, we also fixed a lot of issues related to the screen readers. So now screen readers would work in the ID. And if you ever use RESTful API tester, which would look like that, have you seen it? On the other hand, it's like postman in the ID. We have it for about two years. It's a shame that not all of you know about it. But a good thing, you don't need to learn this one because we already deprecated it. So what you would do before is that you would just get an HTTP method and let's say, OK, let's go to JetBrains.com, PHPStorm, then run it. And the REST client is going to connect to JetBrains.com and get us the response. But you would basically use it in order to work with their RESTful APIs. And you would be getting a response there. But we did not deprecate it altogether. We converted it into a different thing. And this different thing, I lost it. Where is it? OK, let's just do a new one. So yeah, a new RESTful client is fully code-based. So you can do something like that. So you would just start typing. And then with the code, you define all of that. Then you run it. And you will get results right here, of course, with all their headers and so on. But it's going to be a real file. So with all the highlighting, all the formatting, and so on, it will be saved as a temporary file, even better. If you run it a second time, or even if you changed it, we can compare it. Think to this one. Yeah, OK, let's, uh, yeah, yeah. So, uh, well, yeah, basically, if you would be working with your REST API and you change something in the IPA, in the IPA. I'm thinking about beers already. In the API, in the API, if you change something, then basically you will see the difference here in the standard difference viewer. And again, that's a real file right here. You would be able to see what's happening. And there you would also be able to see the history if you would like to go through it. And then it would work for any file, whether HTTP or REST file extension. And there you can save those to the project and their QBT or colleagues as well. And the way I actually created this file is the scratch file. So maybe some of you don't know about it. But the scratch files is an amazing way to create temporary files. So temporary files are needed, for example, when you get some answer from Stack Overflow and you don't need to destroy your project right away because it's not going to be the first Stack Overflow result you are testing. And you need to go through 10 of them to figure out which one works. So you basically create the scratch file. It's temporary file, which gets you all the completion, all the debugging, all the stuff which is normally available in the ID. And you just start working here, running, debugging. And then if you think that it should be copied to your project, then you copy it to the project. But otherwise, it's going to be just a temporary file, which is not going anywhere in your project. Just save it there at the temporary directory. Another thing, which is new, is multi, where is it? No, no, no, it's here already. I'm trying to remember which one is that. OK, so oh yeah, now it works. So this button is used to activate multi-line search and replace. So basically, you can use this one or command-shift-enter. That's the shortcut I did not learn yet because it's new. So basically what you do here is that CD the first line. And then you can do multi-line search and multi-line replace. So before, it would be possible only with a single line. So that's, again, something which is coming into 18.3. Then you probably know the postfix templates, postfix completion. So it's basically a predefined template which you can post, annotate your expression. And then you, for example, write the ESAT and their tab after some variable. And it would work something like that. And then it's going to be wrapped into if. But it's not about postfix. It's about the way that you now can add postfix completion. So before, you could only work with about 20 predefined PHP postfix completion which JetBrains put there. And now you can create your own. And you can create new PHP template for their postfix completion. And there you can just use your own. So another way to do something similar is called life template. And it's just not post-annotation. It's some keywords. And there here, you could add your own for quite a long time. So there are two ways to do that. There's code snippets, either postfix completion or life templates. Both now support custom things. So you can just start adding those. So then something new. So we have this to-do functionality for quite long time. So basically what it does is that if you use some keyword here in the command, it's going to record it and their current file. And show you in a special view that you have this to-do active in your code. And it's going to be the same in the commit dialogue, for example. So you do check to do before you commit. And then you will basically see that in a special dialogue. Do you want to fix those before you commit or not? So now something which apparently has been very popular request is to allow our multi-line to-do. And it was not possible. So I could not write that Aaron has to fix it. Now I can. So I just need to add indentation. And then you can add more lines. And all of them are going to be created as a single to-do item. In fact, in addition to to-do, you can do a lot of other stuff. For example, here I have my custom to-do item defined as WTH, which shouts a T. So you can just create your own and then share it with your colleagues. OK, multi-line to-do commands. What else? OK, for the VCS, there are a few things for the VCS which are available. Version control. Let's find some. It works in the side-by-side viewer. Here in the commit dialogue, you can do partial commits. So if you change the file in some change log before you would have to commit the whole file, but now you can choose with these checkboxes what part of their changes you should submit in this current commit. So you can basically admit a couple of those, and then they will be kept in your change log. And then on the next step, you probably want to add some more. For example, you've seen that you missed something, but you still want to commit the first step. So you can select those right in the commit dialogue before submitting. Then for the VCS, oh, yeah. For the VCS, we also have a couple of things around GitHub. So the first one is about their accounts you have there. So if you have your work and private accounts, now you can add them to a single instance of the ID before you would not be able to do it globally or for a current project. You would have to change your account every time you need to switch. Now you can add more accounts. In fact, as many as you like. So if you have a lot of personas on the web posting to different GitHub repositories, you can just add them to a single ID. And by the way, now it works really well with their two-factor authorization. So it's going to go to GitHub, and it's going to obtain a prominent token for you so that you don't need to write your login and password every time. And then the team on the version control system side did a lot of magic around pull requests. So before, for many years, in fact, you had an opportunity to submit new pull requests to GitHub. Now in addition to that, you can view them right here. So it basically connects to GitHub, and it's going to show you all the information what it has about their pull requests, even with some descriptions. And it's going to get the changes. And you can view them right here. So it's very convenient to review the pull requests to your project. But right now, you cannot yet merge those. You can, of course, check out the revision and then merge it to master. But it's not going to update the pull request. So it's not like merge on GitHub yet. And I believe in the next version, they're going to approach this problem as well. So they basically started from read-only methods, which is view the pull requests, get all the source code, get the revision, and so on. But here in the next version, they're going to bring their write actions, merge this particular pull request as well. So that's what they are going to bring. Then it will take some time. So annotations. They reviewed a lot of different stuff here in annotations. So for example, you can do ignore write spaces and the text movements in the file. And right from here, you can go to their VCS log. And one thing I like a lot is the history up to here on some particular file. So it's going to get you the history of in every branch where the file has been touched. It's going to show you what have been the changes. Because sometimes it's very convenient for, for example, deleted files. And you want to go through the whole history who's been touching it, and so on. And the annotated option has been reworked. So it's now much faster. Because in the bigger projects, it was quite a hassle to get annotation for writing the editor here. OK. So then I wanted to show you something around their inspections. So you probably know that in every new version of PHP Storm, we introduce a lot of inspections. That's those inspections which shout at Symphony right here telling that they have quite a lot of different results. And in order to explore what new inspections we have, you can just go here to the inspections and use new Intel 10.3. That's a new filter we have. And it's going to show you what are the new inspections we introduced. Well, in this version, we introduced mostly for VEP, not for PHP. But it's going to show you different stuff for different versions. So we are going to annotate our next new inspections with this filter as well, so we will be able to see them. Another thing which is not finished yet, but going to be finished very soon, in the next version is the activity monitor. But you can already use it to investigate some issues with the IDE. So for example, sometimes we get feedback that something is working too slow in the IDE, and we need to get more information from you. And in this case, activity monitor, it's very similar to what you have in your operating system or in your Chrome, for example. So you can figure out what plug-in uses all this CPU and so on to understand what is slowing it down. Because sometimes that's not the idea, which is slow. It's some plug-in which is doing some extensive computations, or they have some bugs, which makes this plug-in available outside of the time you actually use in this plug-in. So that might be quite painful in general. But we are going to rework the UI, because right now UI is not pretty. Then you probably already use Docker integration for your products. Docker integration is in works for a couple of years already in JetBrains. And we've introduced a lot of things here. And if you don't use it, you should start. And there is actually, in fact, a Kubernetes plug-in as well, which was released some time ago. You can use Docker, Kubernetes, and all of that right in PHPStorm. So here I can manage containers, images, and see all their variables and do their additional port bindings, get the logs, and so on. So it already works very well for PHP, so you should definitely try that if you haven't tried it. It's not something which is coming in there to 18.3. But Docker support for PHP had been added a couple of versions ago, but they rework it all the time, and they add additional stuff there. So basically, you would be able to use remote interpreter there, and all their debugging, and so on. So you can connect to Docker and work with it. And then structural search and replace search structurally. Probably you don't know about this feature, but it's amazing. It's a thing which allows you to do very complicated regular expression-based search and replace in your project. So for example, maybe we have some example. Actually, I have it in IntelliJ. I have a good example in IntelliJ. Let me show you it there. So what structural search and replace does is that it goes to your project, and you can define very complicated pattern of search. For example, you can define some variables there. And in this case, when it's going to find this code chunk, it's going to replace it, moving the variables, and they're changing the structure of the code, and so on. So I'll show it to you, because I don't have a good example for PHP yet, but I do have one for Java. As soon as it loads, of course, it's going to index almost there. So replace structurally. So for example, this one, we have a search template, try catch, and there we have a couple of variables here, code and exception. And in this case, we can manipulate that, and there create a replace template, moving some of their variables from place to place. And then we can also format, and we can do that here. And it's going to get us this nice representation where we would be able to find all of those and make replacements. So it's basically advanced find and replace. You can use it for a lot of things, and there you can even create your custom inspections based on that. And the last thing I wanted to show you, because Aaron signals me that I don't have much time, right, Aaron? No, you do signal me, or you do signal me, OK. So the databases. It's not something new, but that's probably my favorite feature in PHP Storeman IntelliJL together, because I used to be a web developer, and I would be using something like SQL Yoak, or MySQL Workbench, or even, oh my gosh, PHP MyAdmin to manage all my databases, which sometimes is not ideal. So in all their JetBrains IDs, you have for this amazing database functionality, which basically gets you all of the things these tools bring you, like all the data, all the queries, and so on. So if we go here to the console and do select, it gets you all the completion. Amazing, right? So you can run it from here, and so on. But it would be amazing to have that in PHP as well. OK, let's screw this file. Let's say SQL query, select something from it. It understood that I have SQL, and I have connection to the database here, and it gets me all the tables, all the columns, and so on. In fact, it's not necessarily automatic. Sometimes it is not, I have to tell you. And in this case, you can do something which I do for JSON. Let's say we want to have JSON here. We do alt-enter, we do your inject language or reference, and that's what it basically can do for any language you have in PHPStorm. In this case, we are going to do this for JSON. Even better, we are going to edit JSON fragment in a separate window. Here we go. And if we would do that for this, let's make it more SQL-like. So it's going to take care of all their breaking lines and so on. So it's basically very good for your SQL queries. And from here, you can also run it right in the console if I would have it correctly configured. And you get the dialect if you would like to limit it only to your MySQL. Because it was not sure what kind of dialect is that. So yeah, that's injections. You can inject any languages and their regular expression. Even has a special checker. As soon as we inject regular expressions, we can check them. So you put the regular expression, and then you put the sample, and then it tells you whether it matches or not. So that's additional stuff we have. So you don't need to go and Google for how to test my regular expression without paying for the subscription. And the last new thing I wanted to show you, just remember that there is some new things. Now we can do this one. And then we do control dot, and it's going to complete their first matching statement so that you already can start choosing the method of control dot. I don't have completion here. But if I would, let's do request. I'm not very big in Google. So basically, you get this completion faster. And by the way, this cool thing is called font ligatures. For that, you need to have fewer code font, a special font for software developers. And you need to enable font ligatures. Of course, it's going to be safe to your BCS as like triple or equal. But here you will see it is a nice character. So with that, I hope you learned some tips and tricks during this short session. I hope you'll be able to bring it back to your office and use it to be more productive with PHP storm. Thank you. Go to Symbol. Well, I did it through their search everywhere. But let me find their shortcut. Let's do it here. Command Alt O. Command Alt O. Oh, OK, no. You need to make a class. Oh, no. Yeah, it was option, command option O. But I would normally do double shift and just filter. Now it's easier, at least for me, because I never remember those like extra for files, classes, symbols. I just don't. I feel the pain. Yeah. So double shift search everywhere really works magic.