Создание статического класса и использование констант будет лучшим способом для инкапсуляции определенных констант:
static class Constants
{
const Name = 'foo';
const Path = 'Bar';
}
А затем используйте так:
echo Constants::Name; //foo
echo Constants::Path; //bar
в отношении предварительной проверки вы можете сделать
function _defined($key,$check_classes = false)
{
if($check_classes)
{
foreach(get_declared_classes() as $class)
{
if(constant($class . '::' . $key) !== null)
{
return true;
}
}
}
if(!defined($key)) //global Scope
{
return true;
}
}
Использование:
class a
{
const bar = 'foo';
}
if(_defined('bar',true)) //This would be true because its within a
{
//Blah
}
Если вы думаете о такой ситуации
class a
{
const b = '?';
}
class b
{
const b = '?';
}
константы находятся в области видимости класса, поэтому они не будут влиять друг на друга!