I remember making the transition to FrontPage 2003 so long ago. There was no assurance that I would use the tool; Dreamweaver and some other tools were on the list. It took months for me to get comfortable with FP 2003, but eventually I did.
So far I've reported that my experience with Visual Studio Code (VSC), outfitted with a select set of extensions, has been good. But as I gain experience, I'm beginning to see problems that work against my key goal, which is to make development with PHP as productive as possible.
Before I report on those specific problems and what I've been doing about them, let me share my broader understanding of VSC.
VSC is like a pantry with a few odds and ends. All it really does out of the box is edit text files. It is equipped to provide good editing support for some languages to various degrees, but most of the shelves are bare. To create your ideal environment, you must launch an expedition to explore the dense forest of extensions and bring back the ones that add the delicacies that make the pantry yours.
This is in stark contrast to my decades of experience with integrated development environments, which tend to come with all the bits and pieces one needs to do a particular kind of development.
As mentioned in previous articles, the key VSC extensions I'm using are PHP Intelephense for PHP support, SFTP for publishing, and MySQL for database access.
PHP: Intelephense is excellent except for its performance, which remains inexplicable. When it's working perfectly it is fast and provides exactly the support I need. The stalls have become extremely annoying.
Publishing: SFTP is a reasonably good solution but lacks a few features that are present even in the very old Expression Web. However, it has proven unreliable. I must constantly check what it has done to make sure everything has been published (or excluded) as required. No one can afford to look over their shoulder all the time; it's clearly not productive.
MySQL: There are several extensions with this name; I'm using the one authored by Jun Han. It is good, reflective of its popularity and positive rating. It suffers by comparison; keep reading.
I said I had suspended my examination of PhpStorm, but I've become frustrated enough that I decided to fire it up and compare its PHP, publishing, database and project features to my cobbled-together VSC solution.
PHP: The product is called PhpStorm because PHP is the central language supported. I've been following the product for years and it has always been ahead of the curve, supporting new versions of PHP before those versions were widely available. It's blazingly fast when editing although slow to load. It's the best PHP tool out there and I've known that for a long time. Once PhpStorm is loaded, code intelligence performs at a very high level.
Publishing is built in. While the publishing model is not as good as that in Expression Web, it is better than the SFTP extension for VSC or the built-in capability of Blumentals' Rapid PHP. The features that are missing in SFTP for VSC are available in PhpStorm. Unfortunately, configuration of publishing in PhpStorm is not intuitive.
Database: Built in. PhpStorm's database feature supports almost every major engine and some lesser ones as well. It even differentiates between MySQL and MariaDB, a very subtle distinction that VSC+MySQL and Rapid PHP ignore. JetBrains, the company behind PhpStorm, has a standalone database console called DataGrip; all the features of DataGrip are built in to PhpStorm. Database support is extensive and strong. Configuration can be tricky, which I may deem a JetBrains hallmark.
A lot of my frustration has come from trying to match Expression Web's project model. I can sort of do it with VSC but not quite. One area I'm branching into is using local database tools instead of the online phpMyAdmin, which means I want each project to know about a database connection specific to that project, just as I want publishing information associated with each project.
VSC doesn't make this easy at all, primarily because the needed extensions don't know about one another. For example, I established two database connections for my site. Then I loaded a different site and my database connections were showing in the MySQL panel. Thus if I have 10 database connections defined and I load a project, I then must specifically choose the correct connection. I want the project to know that and show me only the connections that are relevant.
What about PhpStorm? I'm in the process of finding out.
Here I must confess that I have not given PhpStorm its due by thoroughly exploring the product to determine if it can manage a project as I wish. These things are not at all intuitive in PhpStorm and that, combined with the fact that I was trying to avoid paying for a tool for the rest of my life, was an obstacle that caused me to hesitate. Now I have resolved to use PhpStorm for more than one project and doing the research necessary to fully understand project management and other features. In short, I may have been too hasty when I decided project management in PhpStorm could not do what I want.
Sometimes I get lazy.