From 1f2101cfdba58f303221e99a2ecd859a5c8730ff Mon Sep 17 00:00:00 2001 From: Patrick Date: Fri, 12 Sep 2014 18:25:42 +0200 Subject: [PATCH] split into multiple files --- 1-setup.md | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 1-setup.md diff --git a/1-setup.md b/1-setup.md new file mode 100644 index 0000000..830e030 --- /dev/null +++ b/1-setup.md @@ -0,0 +1,86 @@ +### Setting up the front controller + +To start, create an empty directory for your project. You also need an entry point where all requests will go to. This means you will have to create an `index.php` file. + +A common way to do this is to just put the `index.php` in the root folder of the projects. This is also how some frameworks do it. Let me explain why you should not do this. + +The `index.php` is the starting point, so it has to be inside the webserver directory. Which means that the webserver has access to all subdirectories. If you set things up properly, you can still prevent it from accessing your subfolders where your application files are. + +But sometimes things don't go according to plan. And if something goes wrong and your files are set up as explained above, your whole application source code could get exposed to visitors. I won't have to explain why this is not a good thing. + +So instead of doing that, create a folder in your project folder called `public`. This is a good time to create an `src` folder for your application, also in the project root folder. + +Inside the `public` folder you can now create your `index.php`. Remember that you don't want to expose anything here, so put just the following code in there: + +``` +=5.5.0" + }, + "autoload": { + "psr-4": { + "Example\\": "src/" + } + } +} +``` + +In the autoload part you can see that I am using the `Example` namespace for the project. You can use whatever fits your project there, but from now on I will always use the `Example` namespace in my examples. Just replace it with your namespace in your own code. + +Open a new console window and navigate into your project root folder. There run `composer update`. + +Composer creates a `composer.lock` file that locks in your dependencies and a vendor directory. To remove those from your git repository, add a new file in your project root folder called `.gitignore` with the following content: + +``` +composer.lock +vendor/ +``` + +This will exclude the included file and folder from your commits. For which would be a good time now by the way.