PHP ООП: Может ли значение свойства объекта быть функцией?

Мой вопрос довольно прост: в PHP ООП я хочу значение свойство объекта быть возвращается функцией.
Чтобы быть конкретным: я хочу, чтобы строка была переведена с gettext. Но кажется, что значение свойства должно быть строкой, числом или массивом, но не функцией.

  1. Почему это так?
  2. Есть ли решение для моей необходимости перевести значение?

Мой код похож на это:

<?php
class Bar extends Foo {
public $baz = array('lorem' => __('ipsum'));

// other code
?>

0

Решение

Если вы посмотрите на руководство по properties, вы увидите, что:

Эта декларация может включать инициализацию, но это
инициализация должна быть постоянной величиной, то есть она должна быть в состоянии
оцениваются во время компиляции и не должны зависеть от времени выполнения
информация для оценки.

Таким образом, вы не можете использовать функцию при объявлении свойства.

Однако значение может быть установлено где-то еще, поэтому в вашем случае вы можете установить его, например, в конструкторе:

<?php
class Bar extends Foo {
public $baz;

function __construct()
{
$this->baz = array('lorem' => __('ipsum'));
}

// other code
?>
2

Другие решения

свойства в PHP для классов должно быть скалярное значение, поэтому нельзя ожидать вызова функции в качестве значения свойства. Чтобы правильно сделать это, вам нужно будет установить значение в конструкторе.

<?php
class Bar extends Foo {
public $baz = array('lorem' => NULL);

public function __construct()
{
$this->baz['lorem'] = __('ipsum')
}
?>
0

По вопросам рекламы [email protected]