Свойство класса PHP может не иметь выражение в своем объявлении.
[...] Это объявление может включать в себя инициализацию, но эта инициализация должна быть постоянным значением, то есть она должна быть в состоянии быть оцененной во время компиляции, и не должна зависеть от информации времени выполнения для оценки . [...]
Источник: Руководство по PHP: Свойства
Следующий код будет работать нормально, поскольку его информация может быть установлена во время компиляции и не требует, чтобы компилятор искал где-либо еще, получал ли он какие-либо математические или строковые функции.
class goodExample
{
// These are OK.
var $Var = 1;
const consts = 'I\'m a Constant Property of the class goodExample.';
static $static = array(FALSE, TRUE);
}
Следующее, с другой стороны, недопустимо, поскольку его значение необходимо проанализировать, чтобы получить его истинное значение. Это не действует в PHP вообще. var $Var
требует математической операции. Для const consts
требуются краткие выражения и поиск, чтобы получить его значение, поэтому есть две причины, по которым он не будет работать. Наконец, свойство static
$static
требует еще двух математических операций, чтобы получить его истинное значение.
class badExample
{
// These are NOT OK.
var $Var = 1 + 1;
const consts = "I'm a constant property of the class " . __CLASS__ . '.';
static $static = array((1 << 0), (1 << 2));
}
Const
s & Static
Ключевые слова
После объявления этих свойств их значение не может измениться.
const
[...] Константы отличаются от обычных переменных тем, что вы не используете символ $ для объявления или их использования.
Значение должно быть константным выражением , а не (например) переменной, свойством, результатом математической операции или вызовом функции.
Также возможно для интерфейсов иметь константы.
Источник: Руководство по PHP: константы класса
static
[...] Объявление свойств или методов класса как статических делает их доступными без необходимости создания экземпляра класса. К свойству, объявленному как статическое, нельзя получить доступ с помощью экземпляра объекта класса (хотя статический метод может).
Источник: Руководство по PHP: статическое ключевое слово
Static
можно использовать вне класса, если вы ссылаетесь на имя класса.