Переменные класса, оператор разрешения области видимости и различные версии PHP

Я попробовал следующий код на codepad.org:

class test { 
  const TEST = 'testing 123';
  function test () {
    $testing = 'TEST';
    echo self::$testing;
  }
} 
$class = new test;

И он вернулся с:

1
2 Fatal error: Access to undeclared static property:  test::$testing on line 6

Я хочу знать, будет ли работать ссылка на константу класса с переменной на моем домашнем сервере, на котором работает php 5.2.9, тогда как кодовая панель использует 5.2.5. Какие изменения происходят в переменных класса с каждой версией PHP?


person atomicharri    schedule 12.02.2009    source источник


Ответы (1)


Оператор разрешения области действия (также называемый Paamayim Nekudotayim) или, проще говоря, двойное двоеточие - это токен, который позволяет получить доступ к статическим, постоянным и переопределенным членам или методам класса.

Переменная, которую вы определяете в функциональном тесте ($ testing), не является статической или постоянной, поэтому оператор разрешения области не применяется.

class test { 
  const TEST = 'testing 123';
  function test () {
    $testing = 'TEST';
    echo $testing;
  }
} 

$class = new test;

Или просто получите доступ к константе вне класса:

test::TEST;

При правильном использовании он должен работать на вашем домашнем сервере. Что касается изменений ООП с PHP4 на PHP5, документация по PHP может быть полезно. Я бы сказал, что главными изменениями PHP5, касающимися переменных класса, будут их видимость, статические значения и константы. Все это описано по предоставленной ссылке на документацию.

person Asciant    schedule 12.02.2009