2015-07-10 4 views
-1

Так что мой класс начинается какЧто вызывает синтаксическую ошибку в этом случае?

final class MyWordPressSite 
{ 

    const ROOTURL = 'http://mywebsite/mysubsite'; 
    const THEMEROOTURL = self::$ROOTURL . '/wp-content/themes/allytics_theme'; 

    function getRootUrl () 
    { 
     return self::ROOTURL; 
    } 

и . в self::$ROOTURL . '/wp-content/themes/mytheme'; настоящее время помечен как

Syntax error: Unexpected token '$ROOTURL'

Любая идея, почему? Все выглядит правильно для меня. Я установил ярлык синтаксиса PHP, и возможно, что он неправильно помечен этой точкой.

ответ

1

Цитируя PHP Docs

The value must be a constant expression, not (for example) a variable, a property, a result of a mathematical operation, or a function call.

const THEMEROOTURL = self::$ROOTURL . '/wp-content/themes/allytics_theme'; 

не слушается, что ограничение:

self::$ROOTURL не существует, потому что это будет статическая ссылка на переменную, даже ссылку на ваш ранее определяемая константа, на которую следует ссылаться вместо self::ROOTURL

И использование конкатенации - это o peration (не поддерживается до PHP 5.6.0)

0

Вы должны использовать.

private static $ROOTURL = 'http://mywebsite/mysubsite'; 
+0

Тогда он может быть изменен вне класса –

+0

'частных статических ...', то: P – CD001

+0

Пользователь 'private' вместо' public'. Обратите внимание на видимость здесь. http://php.net/manual/en/language.oop5.visibility.php –

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