John
John

Reputation: 1085

PHP add constant on load before scripts

I was wondering if it possible to add constants to php before any scripts are ran, thus on startup. If this is possible, could it be done with classes etc aswell?

I was thinking in the direction of creating a plugin for php but maybe there is a way simpler way.

I don't mean including a file in every script.

thanks in advance

Upvotes: 0

Views: 140

Answers (3)

Zuul
Zuul

Reputation: 16269

If I understand your question correctly, what I do is to include a file before all else on my index.php. That same file contains tons of constants, control verifications, initialization for the DB object, etc...

e.g.,

INSIDE index.php

<?php

$moduleRoot = dirname(__FILE__);
require_once($moduleRoot."/components/inc/inc.php");

// continue to render the web page and perform as usual

?>

INSIDE THE inc.php

// When in development, all errors should be presented
// Comment this two lines when in production
error_reporting(E_ALL);
ini_set('display_errors', '1');

// Website id for this project
// the website must be present in the table site in order to get
// the configurations and records that belong to this website
define("CONF_SITE_ID",1);

// Domain path where the project is located
// Should be like the access used on the browser
$serverDomain = $_SERVER["HTTP_HOST"];
$serverAccess = (!empty($_SERVER['HTTPS'])) ? ('https://') : ('http://');
$serverRoot = dirname(__FILE__);
define("CONF_DOMAIN", $serverAccess.$serverDomain);

// etc ...

EDITED

Since you have multiple "startup" files and you need all of them to call inc.php, the best choise seems to be .user.ini as of PHP 5.3.0, you can read about it here!.

And an article on the subject.

Upvotes: 0

Matthew
Matthew

Reputation: 48284

To directly answer the question, there are two approaches:

  1. Use auto_prepend_file to auto include a PHP file that has define calls.

  2. Configure your web server to set server variables.

I think the second is a better approach. However, I don't see how either of them are very useful in the context of a plugin. Usually a class autoloader of some sort is the way to go there, or to require a single include file.

Upvotes: 1

HappyTimeGopher
HappyTimeGopher

Reputation: 1387

Not constants as far as I'm aware, but this is ok:

.htaccess

SetEnv MYVAR "hello"

somefile.php

echo $_SERVER['MYVAR']; 

See the Apache docs on SetEnv for more.

Upvotes: 3

Related Questions