Наличие пространств имен в PHP является большим. При наличии '\', поскольку разделитель пространства имен является немного... неловким (но если существует кто-то, кто думает, что это прохладно и сексуально, я добавляю тег "напыщенная речь" к этому сообщению.;).
Так, здесь идет вопрос:
Вы используете в своем коде постоянный NAMESPACE_SEPARATOR? Как в коде ниже:
Профессионалы:
Недостатки:
DIRECTORY_SEPARATOR
это, значение является зависимым платформы, разделитель пространства имен не". (как указано в http://bugs.php.net/bug.php?id=43046)Существуют места, где Вы не можете использовать это (полные квалифицированные имена классов как переменные класса по умолчанию) т.е.:
Так, что Вы думаете?
Я не уверен, что вообще понял вашу мысль... Константы PHP не похожи на макросы препроцессора C. Вы не можете создать макрос и заменить им оператор - он просто не будет работать:
<?php
define('ADD', '+');
echo (3 ADD 5); // Parse error: syntax error, unexpected T_STRING
?>
Даже если бы он работал, какова цель? Скрывать синтаксис языка, чтобы сделать его похожим на другой язык, с которым вы лучше знакомы, - пустая трата времени, не говоря уже о том, что это усложняет работу над проектом для других программистов. Если вы считаете, что язык X выглядит круче, что ж, просто пишите X, а не PHP :)
Использование разделителя пространства имен в местах, где он должен быть строкой (например, в автозагрузках и обратных вызовах), не вызывает особых трудностей при использовании одинарных кавычек, поскольку единственное место, где его нужно экранировать, это прямо перед кавычками или другим обратным слешем, поэтому его можно писать как есть:
$callback = 'Foo\Bar';
Все остальные варианты кажутся мне излишне сложными:
$callback = "Foo\\Bar";
$callback = 'Foo' . NAMESPACE_SEPARATOR . 'Bar';
$callback = "Foo{$namespace_separator}Bar";