I have a PHP library on packagist.org, which uses some constants, changing from project to project.
I'm trying to use constants like that:
Constants stores in conf.php in composer libriary
After composer init username/mylib command, I making a copy from /vendor/username/mylib/conf.php to local /conf.php and use it for current project config
for project1, in /conf.php
define("HOST", "host1.com");
project2, in /conf.php
define("HOST", "host2.com");
But it looks like a wrong way.
What is right way to use constants with composer libraries ?
I prefer to do this a slightly different way
in my libabry i would have
/vendor/vendorname/pkg/config/system.php
/vendor/vendorname/pkg/config/local.sample.php
and provide instructions to copy
/vendor/vendorname/pkg/config/local.sample.php
to
/config/local.php
then in my code I would have something like
$sysconffile = static::$vendorbasedir . '/config/system.php';
if (file_exists($sysconffile)) {
$sysconf = require $sysconffile;
} else {
throw new \RuntimeException('Sys Conf Missing!');
}
$localconf = [];
$localconfile = static::$appbasedir . '/config/local.php';
if (file_exists($localconfile)) {
$localconf = require $localconfile;
}
UPDATE:
I also prefer static classes with data over defines, as a define is very loose in documentation, type hinting and over-writable ..
So once i have both config's, I usually do
static::$config = array_replace_recursive($sysconf, $localconf);