Конкатенация статических переменных класса php - PullRequest
0 голосов
/ 24 июля 2010

Мой первый класс:

<?php
  require_once( 'error/DisconnectedHandler.php' );
  require_once( 'error/NoSuchRequestHandler.php' );

  class NetworkManager {

  public static final $RESPONSE_JUMP = 1000;
  ....

Мой второй класс:

<?php
    require_once( '../NetworkManager.php' );

    class DisconnectedHandler implements Handler{
        public static $TYPE          = 2000;
        public static $RESPONSE_TYPE = self::$TYPE + NetworkManager::$RESPONSE_JUMP;
        public static $VER           = 0;

Я получаю сообщение об ошибке в этой строке:

public static $RESPONSE_TYPE = self::$TYPE + NetworkManager::$RESPONSE_JUMP;

Eclipse IDE paint $TYPE в красном и говорит:

Multiple annotations found at this line:
- syntax error, unexpected '$TYPE', expecting 
 'identifier'
- syntax error, unexpected '$TYPE', expecting 
 'identifier'

Какой правильный синтаксис для этого?

1 Ответ

7 голосов
/ 24 июля 2010

Объявления статических переменных (а также константы классов) должны быть определены буквально и не могут содержать выражения, поскольку они вычисляются до выполнения.

Вы должны инициализировать DisconnectedHandler::$RESPONE_TYPE в конструкторе или, скорее всего,метод статического инициализатора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...