2013-04-04 2 views
2

У меня есть следующий код теста:PHP - константа пространства печати в строке?

namespace Test { 
    const ONE = 50; 

    class A { 
     const TWO = 5; 

     public function pA($string) { 
      return $string; 
     } 
    } 

    $a = new A(); 
    print $a->pA($a::TWO); 
    print "This is a string: {$a->pA($a::TWO)}"; 
    print "This is a namespace constant: " . ONE; 
    print "This is a namespace constant: " . \Test\ONE; 
} 

Все эти примеры работы, но это не то, что я ищу.

Могу ли я использовать композицию строк для представления константы, как в первых двух примерах? Я пробовал много комбинаций вроде "${\Test\B}" или "${B}" или "${\B}", но пока не повезло.

Возможно, это невозможно, и я переусердствовал, но в любом случае ... есть ли способ сделать это?

ответ

2

Это не сработает. Вы можете использовать $ переменные, функции или вызовы метода объекта в двойной кавычки, но не константы. Обратитесь к PHP string parsing documentation. Вы найдете много полезных примеров.

+0

Я уже опасался, что найду такой ответ ха-ха, но все в порядке. Я просто хотел узнать, возможно ли это или нет, и теперь я знаю, что должен составлять свои строки с помощью точечной нотации вместо составления полных строк. Спасибо за ответ :) –

+1

Да, к сожалению, это ответ. Однако в настоящее время я не вижу причин, почему кудрявый синтаксис '{\ Test \ ONE}' не должен работать. Может быть, стоит подумать о том, чтобы подать запрос на изменение в команду разработчиков PHP. – hek2mgl

Смежные вопросы