Правильный отступ при инициализации массива, PDT/Zend Studio

Я использую следующий стиль инициализации массива в коде:

$a = array(
    'one' => 123,
    'two' => 456
);

Но PDT/Zend Studio в этом случае работает некорректно; после нажатия клавиши [Return] он помещает курсор под $a (в моем примере) и игнорирует отступ. Если ключи массива являются числами (по крайней мере, не начинаются с кавычек), все работает нормально.

Вот как это работает на данный момент (| — это позиция, куда редактор ставит курсор после нажатия [Return])

$a = array(
    'one' => 123,[RETURN]
|
);

Это ожидаемый результат:

$a = array(
    'one' => 123,[RETURN]
    |
);

Так можно ли заставить редактора следовать моим правилам отступов?


person Sergey Stolyarov    schedule 27.08.2009    source источник
comment
+1: у меня точно такая же проблема - я думаю так же, как и вы, и так и не нашел решения :-(   -  person Pascal MARTIN    schedule 27.08.2009
comment
Просто идея: что произойдет, если вы заключите это в скобки? {$а = массив( ... );}   -  person Zed    schedule 27.08.2009
comment
То же самое, без должного отступа.   -  person Sergey Stolyarov    schedule 27.08.2009
comment
Вы просмотрели настройки форматирования кода в окнах конфигурации? Я нашел их относительно подробными. Если настройки нет, я бы зарегистрировал это как ошибку.   -  person TheJacobTaylor    schedule 31.08.2009
comment
Ага, я посмотрел. Таких нет, действительно похоже на баг.   -  person Sergey Stolyarov    schedule 01.09.2009
comment
Такая же проблема, может у кого есть решение?   -  person Industrial    schedule 28.05.2010


Ответы (7)


У меня недавно была точно такая же проблема. Я решил это в Zend Studio (IDE на основе Eclipse), перейдя в

Preferences -> PHP -> Code Style -> Formatter

а затем выберите «Изменить» на экране рядом с именем предустановки форматирования. В открывшемся окне перейдите на вкладку Line Wrapping и в списке выберите

Expressions -> Array Initializers.

Играйте с настройками по своему вкусу.

С Уважением

Лукас

person Bery    schedule 14.12.2010

Я предлагаю вам создать учетную запись в треклисте bugzilla и проголосовать за следующую функцию:

https://bugs.eclipse.org/bugs/show_bug.cgi?id=320130

Если людей будет достаточно, они, возможно, интегрируют такие функции в следующую версию PDT.

person Sylvain Lecoy    schedule 11.10.2010
comment
хорошая функция, оставил свой голос, но я не думаю, что она будет включена, потому что это одна из основных функций Zend Studio. - person Sergey Stolyarov; 13.10.2010

В ZendStudio вы можете применить PhpCodeFormatter с помощью Ctrl+Shift+F.

Средство форматирования можно настроить в окне->настройки->PHP->Стиль кода->Формат (Zend Studio 7.0) для переформатирования массивов, как описано выше.

PDT, насколько я знаю, не имеет этой функции.

person MGriesbach    schedule 27.08.2009

Я не уверен насчет Eclipse, но у меня была такая же проблема в TextMate. Я переключился на мягкие вкладки (также известные как 4 пробела) вместо вкладок, и теперь они действуют как «ожидаемые». Есть ли в ZendStudio такая возможность?

person typeoneerror    schedule 27.08.2009
comment
Как ни странно, я только что открыл Flex Builder (также eclipse) и протестировал его, и он работает, как и ожидалось. Что-то конкретное для Zend Studio? Может быть, попросить их поддержки. - person typeoneerror; 28.08.2009
comment
Похоже на баг PHP (т.е. PDT, а Zend Studio основан на PDT). - person Sergey Stolyarov; 01.09.2009

@MGriesbach: на самом деле PDT (Eclipse) имеет эту функцию (в разделе «Источник» -> «Формат»).

@Sergei: у Eclipse нет этой проблемы, но похоже, что что-то не так с вашей конфигурацией. Вы уверены, что просмотрели все варианты? Вы также можете отправить электронное письмо команде Zend, это звучит как довольно тривиальная ошибка со стороны наследника, поскольку она побуждает разработчиков писать код с неправильным отступом.

-- редактировать--

Моя беда, у Eclipse PDT есть эта проблема, но я просто привык к ней:) Проблема исчезает, если я нажимаю клавишу Tab, поэтому первая строка будет иметь отступ. Остальные строки будут следовать правильно.

person Quamis    schedule 02.09.2009

Нет, это ошибка Eclipse.

Я столкнулся с этим, используя ВСЕ текстовые редакторы Eclipse (SQL, XML, YML, ShellEd и т. д.).

Однако это происходит только с моей установкой Eclipse для Linux (Kubuntu Karmic) на x86_64. Я протестировал его на i386 Karmic на своей работе, и он отлично работает.

person Taras Tkachenko    schedule 26.04.2010

Попробуйте

Window->Preferences
PHP->Code Style->Formatter
Indentation->Dafault Indentation для инициализаторов массива = 1

person user3556789    schedule 21.04.2014