Вы не можете использовать что-то вроде этого:
$this->getData()['a']['b']
т.е. синтаксис доступа к массиву не возможен непосредственно при вызове функции.
Вы должны использовать некоторую временную переменную , например:
$tmp = $this->getData();
$tmp['a']['b'] // use $tmp, now
В вашем случае это, вероятно, означает использование чего-то вроде этого:
function myfunction() {
$tmp = $this->getData();
return ($tmp['a']['b'] ? true : false);
}
Вы должны:
getData ()
и сохранить его результат. значение во временной переменной У вас нет особого выбора, на самом деле ...
Хорошо ... видимо, лучшего способа нет, поэтому я отвечу сам с не очень красивым решением:
Я создал функцию:
arrayGet($array, $index) { return $array[$index]; }
И использовал ее так:
myfunction() { return '(arrayGet(arrayGet($this, "a"), "b") ? true : false)' }
Это некрасиво, но работает.
$ this
-> данные
всегда доступны, если они защищены. $ object
-> data
недоступен отовсюду, поэтому, если вы возвращаете $ this
в своем коде, и он оценивается как таковой, все должно быть в порядке.
Между прочим, в вашем коде есть ошибка: кавычки нужно экранировать.
myfunction() { return '($this->data[\'a\'][\'b\'] ? true : false)'; }