Переменные класса, оператор разрешения области видимости и разные версии PHP - PullRequest
0 голосов
/ 12 февраля 2009

Я попробовал следующий код в 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, тогда как codepad использует 5.2.5. Какие изменения в переменных класса в каждой версии PHP?

1 Ответ

3 голосов
/ 12 февраля 2009

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

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

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

$class = new test;

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

test::TEST;

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

...