Мой вопрос довольно прост: в PHP ООП я хочу значение свойство объекта быть возвращается функцией.
Чтобы быть конкретным: я хочу, чтобы строка была переведена с gettext. Но кажется, что значение свойства должно быть строкой, числом или массивом, но не функцией.
Мой код похож на это:
<?php
class Bar extends Foo {
public $baz = array('lorem' => __('ipsum'));
// other code
?>
Если вы посмотрите на руководство по properties
, вы увидите, что:
Эта декларация может включать инициализацию, но это
инициализация должна быть постоянной величиной, то есть она должна быть в состоянии
оцениваются во время компиляции и не должны зависеть от времени выполнения
информация для оценки.
Таким образом, вы не можете использовать функцию при объявлении свойства.
Однако значение может быть установлено где-то еще, поэтому в вашем случае вы можете установить его, например, в конструкторе:
<?php
class Bar extends Foo {
public $baz;
function __construct()
{
$this->baz = array('lorem' => __('ipsum'));
}
// other code
?>
свойства в PHP для классов должно быть скалярное значение, поэтому нельзя ожидать вызова функции в качестве значения свойства. Чтобы правильно сделать это, вам нужно будет установить значение в конструкторе.
<?php
class Bar extends Foo {
public $baz = array('lorem' => NULL);
public function __construct()
{
$this->baz['lorem'] = __('ipsum')
}
?>