/environment-php

Environment Class for PHP

Primary LanguagePHPApache License 2.0Apache-2.0

Environment

This class is pretty simple. It adds environments to your PHP project.

To Install

Install with composer:

composer require aequasi/environment

To Use

To get set up, drop the Environment class in your front controller. For example:

<?php

require_once __DIR__.'/vendor/autoload.php';

$environment = new Aequasi\Environment\Environment;

// By default, the environment is set to 'dev'
echo $environment->getType();
// Above will echo 'dev';
var_dump($environment->isDebug());
// Above will dump true

You can set what the default environment is with Environment::$DEFAULT_ENVIRONMENT (string), and you can set what environments are in debug mode with Environment::$DEBUG_TYPES (string[]).

The allowed environments can also be changed by overriding the Environment::$DEFAULT_TYPE (string[]) parameter.

Setting Environments

Once you are ready to start using other environments (test, staging, and prod), there are a couple ways to do that.

1. php.ini

In your php.ini file, setting php.environment will set the environment for all processes using the php for that php.ini

2. $_SERVER['PHP_ENVIRONMENT']

You can either use Apache or Nginx to set a server variable, or you can modify your $_SERVER header to set the environment

  • For Apache, use SetEnv
  • And Nginx is a little different. Check this StackOverflow post for an example.

3. CLI Arguments

If you are using the SymfonyEnvironment class, you can tie into the arguments (--env and --no-debug) by creating your environment a little differently:

#!/usr/bin/env php
<?php
set_time_limit(0);

require_once __DIR__.'/bootstrap.php.cache';
require_once __DIR__.'/AppKernel.php';

use Symfony\Bundle\FrameworkBundle\Console\Application;
use Symfony\Component\Console\Input\ArgvInput;
use Symfony\Component\Debug\Debug;
use Aequasi\Environment\SymfonyEnvironment;

$input = new ArgvInput( );
$env = new SymfonyEnvironment( $input );

if( $env->isDebug() ) {
  Debug::enable();
}

$kernel = new AppKernel( $env->getType(), $env->isDebug() );
$application = new Application($kernel);
$application->run( $input );