Свойства
Вернуться к: Классы и объекты
Переменные, которые являются членами класса, называются "свойства". Также их называют, используя другие термины, такие как "атрибуты" или "поля", но в рамках этой документации, мы будем называть их свойствами. Они определяются с помощью ключевых слов public, protected, или private, следуя правилам правильного описания переменных. Это описание может содержать инициализацию, но инициализация должна применяться для константных значений - то есть, переменные должны быть вычислены во время компиляции и не должны зависеть от информации программы во время выполнения для их вычисления.
Смотри Область видимости для получения информации о применении public, protected, и private.
Замечание:
Для того, чтобы поддерживать обратную совместимость с PHP 4, PHP 5 по-прежнему позволяет использовать ключевое слово var при определении свойств вместо (или в дополнении к) public, protected, или private. Однако, var больше не требуется. В версиях PHP с 5.0 по 5.1.3, использование var считалось устаревшим вызывало
E_STRICT
предупреждение, но с PHP 5.1.3 больше не считается устаревшим и не выдает предупреждения.Если, для определения свойства, вы используете var вместо одного из: public, protected, или private, тогда PHP 5 будет определять свойство как public.
В пределах методов класса доступ к нестатическим свойствам может быть получен с помощью -> (объектного оператора): $this->property (где property - имя свойства). Доступ к статическим свойствам может быть получен с помощью :: (двойного двоеточия): self::$property. Подробнее о различиях между статическими и нестатическими свойствами смотрите в разделе "Ключевое слово Static" для получения большей информации.
Псевдо-переменная $this доступна внутри любого метода класса, когда этот метод вызывается в пределах объекта. $this - это ссылка на вызываемый объект (обычно, объект, которому принадлежит метод, но возможно и другого объекта, если метод вызван статически из контекста второго объекта).
Пример #1 Определение свойств
<?php
class SimpleClass
{
// неправильное определение свойств:
public $var1 = 'hello ' . 'world';
public $var2 = <<<EOD
hello world
EOD;
public $var3 = 1+2;
public $var4 = self::myStaticMethod();
public $var5 = $myVar;
// правильное определение свойств:
public $var6 = myConstant;
public $var7 = array(true, false);
// Это разрешено только в PHP 5.3.0 и более поздних версиях.
public $var8 = <<<'EOD'
hello world
EOD;
}
?>
Замечание:
Существуют несколько интересных функций для обработки классов и объектов. Вы можете их увидеть тут Class/Object Functions.
В отличии от heredocs, nowdocs может быть использованы в любом статическом контексте данных, включая определение свойств.
Пример #2 Пример использования nowdoc для инициализации свойств
<?php
class foo {
// As of PHP 5.3.0
public $bar = <<<'EOT'
bar
EOT;
}
?>
Замечание:
Поддержка nowdoc была добавлена в PHP 5.3.0.
Вернуться к: Классы и объекты