This tutorial has a new version, check it out!

Our Micro-App & PhpStorm Setup

Video not working?

It looks like your browser may not support the H264 codec. If you're using Linux, try a different browser or try installing the gstreamer0.10-ffmpeg gstreamer0.10-plugins-good packages.

Thanks! This saves us from needing to use Flash or encode videos in multiple formats. And that let's us get back to making more videos :). But as always, please feel free to message us.

Our mission: to boldly go where no one has gone before... by checking out our app! I already opened the new directory in PhpStorm, so fire up your tricorder and let's explore!

The public/ Directory

There are only three directories you need to think about. First, public/ is the document root: so it will hold all publicly accessible files. And... there's just one right now! index.php. This is the "front controller": a fancy word programmers invented that means that this is the file that's executed when you go to any URL.

But, really, you'll almost never need to worry about it. In fact, now that we've talked about this directory, stop thinking about it!

src/ and config/

Yea, I lied! There are truly only two directories you need to think about: config/ and src/. config/ holds... um... ya know... config files and src/ is where you'll put all your PHP code. It's just that simple.

Where is Symfony? As usual, when we created the project, Composer read our composer.json file and downloaded all the third-party libraries - including parts of Symfony - into the vendor/ directory.

Installing the Server

Go back to your terminal and find the original tab. Check this out: at the bottom, it says that we can get a better web server by running composer require server. I like better stuff! So let's try it! Press Ctrl+C to stop the existing server, and then run:

composer require server

If you're familiar with Composer... that package name should look funny! Really, wrong! Normally, every package name is "something" slash "something", like symfony/console. So... server just should not work! But it does! This is part of a cool new system called Flex. More about that soon!

When this finishes, you can now run:

php ./bin/console server:run

This does basically the same thing as before... but the command is shorter. And when we refresh, it still works!

By the way, this bin/console command is going to be our new robot side-kick. But it's not magic: our project has a bin/ directory with a console file inside. Windows users should say php bin/console... because it's just a PHP file.

So, what amazing things can this bin/console robot do? Find your open terminal tab and just run:

php ./bin/console

Yes! This is a list of all of the bin/console commands. Some of these are debugging gold. We'll talk about them along the way!

PhpStorm Setup

Ok, we are almost ready to start coding! But we need talk about our spaceship, I mean, editor! Look, you can use whatever your want... but... I highly recommend PhpStorm! Seriously, it makes developing in Symfony a dream! And no, those nice guys & gals at PhpStorm aren't paying me to say this... but they can if they want to!

Ahem, If you do use it... which would be awesome for you... there are 2 secrets you need to know to trick out your spaceship, ah, editor! Clearly I was in hyper-sleep too long.

Go to Preferences, Plugins, then click "Browse Repositories". There are 3 must-have plugins. Search for "Symfony". First: the "Symfony Plugin". It has over 2 million downloads for a reason: it will give you tons of ridiculous auto-completion. You should also download "PHP Annotations" and "PHP Toolbox". I already have them installed. If you don't, you'll see an "Install" button right at the top of the description. Install those and restart PHPStorm.

Then, come back to Preferences, search for "symfony" and find the new "Symfony" section. Click the "Enable Plugin" checkbox: you need to enable the Symfony plugin for each project. It says you need to restart... but I think that's lie. It's space! What could go wrong?

So that's PhpStorm trick #1. For the second, search "Composer" and click on the "Composer" section. Click to browse for the "Path to composer.json" and select the one in our project. I'm not sure why this isn't automatic... but whatever! Thanks to this, PhpStorm will make it easier to create classes in src/. You'll see this really soon.

Okay! Our project is set up and it's already working. Let's start building some pages and discovering more cool things about new app.

Leave a comment!

What PHP libraries does this tutorial use?

// composer.json
{
    "require": {
        "php": "^7.1.3",
        "ext-iconv": "*",
        "sensio/framework-extra-bundle": "^5.1", // v5.1.3
        "symfony/asset": "^4.0", // v4.0.3
        "symfony/console": "^4.0", // v4.0.14
        "symfony/flex": "^1.0", // v1.2.7
        "symfony/framework-bundle": "^4.0", // v4.0.14
        "symfony/lts": "^4@dev", // dev-master
        "symfony/twig-bundle": "^4.0", // v4.0.3
        "symfony/web-server-bundle": "^4.0", // v4.0.3
        "symfony/yaml": "^4.0" // v4.0.14
    },
    "require-dev": {
        "easycorp/easy-log-handler": "^1.0.2", // v1.0.4
        "sensiolabs/security-checker": "^5.0", // v5.0.3
        "symfony/debug-bundle": "^3.3|^4.0", // v4.0.3
        "symfony/dotenv": "^4.0", // v4.0.14
        "symfony/monolog-bundle": "^3.0", // v3.1.2
        "symfony/phpunit-bridge": "^3.3|^4.0", // v4.0.3
        "symfony/profiler-pack": "^1.0", // v1.0.3
        "symfony/var-dumper": "^3.3|^4.0" // v4.0.3
    }
}