Сокращенное обозначение для получения поля объекта - PullRequest
4 голосов
/ 30 июня 2011

Мне интересно, есть ли в PHP краткая запись для получения поля объекта при создании объекта.

Например, в Java мне не нужно помещать вновь созданный объект в переменную, чтобы получить одно из его полей. Пример:

public class NewClass {
    public int testNum = 5;
}

Теперь, чтобы получить поле testNum во вновь созданном объекте, все, что мне нужно сделать, это:

int num = (new NewClass()).testNum;

Хотя аналогичный случай в PHP заставил бы меня сделать это:

$obj = new NewClass();
$num = $obj->testNum;

Есть ли в PHP способ сделать это одним оператором? Примечание: я не могу редактировать классы.

Ответы [ 3 ]

2 голосов
/ 30 июня 2011

Может быть, вы ищете статические свойства или константы

public class NewClass {
  const NUM = 5;
  public static $num = 5;
}
$num = NewClass::NUM;
$num = NewClass::$num;

Если вам действительно нужны члены объекта, то нет, PHP в настоящее время не поддерживает это, но это запланировано на следующий выпуск 5.4.

2 голосов
/ 30 июня 2011

Вы можете создать в вашем классе функцию создания оболочки, которая вызывает конструктор, тогда вы можете просто:

$num = NewClass::Create()->testNum;
1 голос
/ 30 июня 2011

Вы можете сделать это только с помощью вызовов функций / методов.
new это не функция, а языковая конструкция.

...