Эта проблема теперь более или менее решена с помощью нового (PHP> 5.5) подхода к именам классов с использованием разрешения имен классов (в PHP RFC это называлось скалярами имен классов ).
Хотя использование строк, заполненных именами классов, все еще полезно для всех видов магии, особенно автоматической загрузки, использование полностью определенных имен классов, поскольку жестко запрограммированные строки подвержены ошибкам и их трудно обнаружить в IDE.
Как то, как это отвечает на первоначальный вопрос: иногда константа-разделитель пространства имен полезна для очень специфических частей вашего кода, хотя я встречал меньше мест, где бы я фактически использовал ее.
В вашем примере вы бы предпочли использовать:
<?php
namespace My\Namespace;
class A {
protected $sDefaultReporterClass = DefaultReporter::class;
// or
protected $sAnotherReporterClass = \Other\Namespace\Reporter::class;
}
Когда масштабы этой проблемы настолько малы, что она будет использоваться только в определенной части кода, это, вероятно, не узаконит встроенную константу PHP. Если это так, другие операторы, такие как оператор области видимости, также должны быть включены в качестве константы. Константа PAAMAYIM_NEKUDOTAYIM для "::"? (Простите за маленький постоянный псевдоним)
Не реализованной функцией PHP, которая может пригодиться после такого подхода, будет магическая константа пространства имен ::. 1016 *