This package is abandoned and no longer maintained. No replacement package was suggested.

Base php environment

Installs: 9

Dependents: 1

Suggesters: 0

Security: 0

Stars: 0

Watchers: 2

Forks: 0

Open Issues: 0


v2.0.0 2018-05-11 19:58 UTC

This package is not auto-updated.

Last update: 2022-02-01 13:12:48 UTC


Build Status Latest Stable Version Total Downloads License

a basic php development environment

This composer plugin aims to be an assist in building your base environment in potentially multiple projects.

It does that by providing apis to define common config files. It is also highly extendable so you can add your own configurations for what your needs are.

start a new project

  • mkdir your_project_folder && cd your_project_folder
  • composer init -n
  • composer require --dev nemo64/environment

Now control your environment using make. To see what you can do run make help. Basically you want to run make start to start your local server and make stop to stop it. Your webserver is by default available under localhost:80.

what files are created and by what

  • docker-compose.yml and Dockerfile-*s will be generated by DockerConfigurator. Those files will written using the ChecksumArea strategy. You may edit/add/remove lines as you please but try to avoid it since those lines will not be changed afterwards.
    • PhpConfigurator will add the chialab/php (apache) image based on the version defined by composers platform.php.
  • .gitignore is created by the GitignoreConfigurator. To modify the gitignore just write into it. The generator will see your rules and merge them with the rules it is supposed to add. If you want to remove a rule, put # in front of it and it the rule won't be added again.
    • ComposerConfigurator will add the vendor folder.
    • DockerConfigurator will add a docker-compose.log file.
  • Makefile will be generated by MakefileConfigurator.
    • ComposerConfigurator will add a vendor target depending on composer.* files to automatically run composer install when needed.
    • DockerConfigurator will add the phony targets start, stop and clean. Also a docker-compose.log target will be added which runs the build process when a dockerfile changes.

how it works

Other than most scaffold projects, this is a composer plugin and aims to not only create your base files but also to update them.

This plugin will run on every composer install and composer update, checks if some conditions have changed and potentially updates some files. For example:

  • you get a basic docker php environment that is keeped up to date with your composer configured platform.php version.
  • you get a makefile to easily start/stop and install your project (just run make serve) to install and start everything. Depending on your configuration you can also add other dependency management commands to the install command.
  • your .gitignore file will always contain all installed libraries even if they are installed outside the vendor dir which is common for older projects like typo3.

These is just the basic functionality. You can implement your own rules by creating a class extending the ConfiguratorInterface. In this class you'll be able to either create your own files or configure the already existing Configurators eg. to add more gitignore rules.

extend functionality

Configurators aren't limited to other composer-plugins. You can add them to your root project or even other libraries if they need to add something to a project outside their folder. If you need to add a file to the projects .gitignore file, you can simply add your own Configurator like this:


class MyConfigurator implements \Nemo64\Environment\Configurator\ConfiguratorInterface
    public function getInfluences(): array
        return [
    public function configure(\Nemo64\Environment\ExecutionContext $context): void

And hint to the file in your composer.json:

    "extra": {
        "nemo64/environment": {
            "classes": ["Namespace\\MyConfigurator"]

Done. Your configure method will be called every time you use composer. You can check if other extensions get installed, read config files. Even ask the user questions using io (but be sure those are only asked once).


If you want your configurator to be useful, make sure it is highly adaptive. The GitignoreConfigurator won't remove rules you have made and even preserves comments. Therefor an outside user does not have to learn a new way of configuring a file that is right there. He just adds a rule and it works as expected.