Есть ли настройка PHP, которая устанавливает, можете ли вы индексировать результат функции? - PullRequest
8 голосов
/ 12 июня 2011

У меня есть два сервера.Они оба работают php 5.3.3.Этот код работает на одном сервере и возвращает синтаксическую ошибку на другом.Есть ли настройка php ini, которая влияет на это поведение?Я не могу найти ничего связанного с документацией PHP, но я могу искать не там.

Сервер 1

> php -v
PHP 5.3.3 (cli) (built: Sep 23 2010 14:15:16) 
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
with Xdebug v2.0.3, Copyright (c) 2002-2007, by Derick Rethans

php > echo explode(" ", " foo ")[1];
foo

Сервер 2

> php -v
PHP 5.3.3 (cli) (built: Jan 31 2011 15:57:29) 
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

php > echo explode(" ", " foo ")[1];
Parse error: syntax error, unexpected '[', expecting ',' or ';' in php shell code on line 1

Еще одна идея: PHP на обоих серверах компилируется по своему усмотрению, поэтому он также может иметь другой флаг компиляции.

Ответы [ 2 ]

3 голосов
/ 12 июня 2011

Aha!Я понял это.

Мы установили XHP Facebook для профилирования нашего сервера разработки.Этот синтаксис (который довольно элегантен) был добавлен в модуль PHP.Вот разница между файлом php.ini между сервером 1 и 2:

> ; XHP https://github.com/facebook/xhp/wiki/Building-XHP
> extension=xhp.so
> ; adds support for the [] operator on the return value of a function
> xhp.idx_expr = 1
> ;  Tracking errors in XHP applications is very difficult without annotations.
> xhp.include_debug = 1

Мне нравится этот синтаксис, поэтому я, вероятно, установлю XHP на другом сервере.Спасибо за помощь, Михас, за то, что предложил мне разложить файлы ini.

3 голосов
/ 12 июня 2011

Нет.

PHP не поддерживает этот синтаксис. Он находится на стволе , но еще не выпущен (по состоянию на PHP 5.3.3).

Я понятия не имею, как он работает на вашем первом сервере, но, возможно, этот "Xdebug" делаетразница?

...