PHP #region для сгибания кода?

Существует ли эквивалентность c # #области c # в PHP?

Solutions Collecting From Web of "PHP #region для сгибания кода?"

Нет .

Дело в том, что C # – это своего рода программа, предназначенная для записи только одной средой IDE, потому что Microsoft должна всегда использовать их инструменты. Таким образом, встроенные в язык (вроде) вещи, которые влияют на IDE.

PHP, с другой стороны, это всего лишь язык . У него не должно быть симбиотических отношений с каким-то конкретным редактором, так что это не так. Итак, нет, ему нечего контролировать у вашего редактора.

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

Нет, на этом языке нет ничего.

Но все приличные редакторы допускают некоторую разметку, чтобы это допускать.

Например, в Netbeans:

 // <editor-fold defaultstate="collapsed" desc="user-description"> ...any code... // </editor-fold> 

Этот синтаксис также работает во всех семействах редакторов Intellij IDEA, см. http://blog.jetbrains.com/webide/2012/03/new-in-4-0-custom-code-folding-regions/

Вы также можете эмулировать функцию в Eclipse через плагин: плагин для складывания кода для Eclipse?

Как было сказано ранее, #region в .Net – это фактически функция Visual Studio, а не C # 1, но тот факт, что грамматика C # поддерживает синтаксис, позволяет использовать ее любой IDE, которая хочет ее реализовать. Так как в PHP символ «#» также используется для комментариев, то это же можно сделать с помощью IDE. Фактически, PhpStorm JetBrains делает это: https://blog.jetbrains.com/phpstorm/2012/03/new-in-4-0-custom-code-folding-regions/

Нет эквивалента (другие ответы объясняют, почему), но позвольте мне показать вам, как я это делаю:

 ////////////////////////// /* REGION A */ { function SomeFunction() { return true; } function AnotherFunction() { return false; } } ////////////////////////// /* REGION B */ { function ThirdFunction() { return true; } function FourthFunction() { return false; } } 

Кудрявые фигурные скобки позволяют мне сбрасывать блок кода (вашему редактору нужно будет поддерживать холодную складку, но почти все они), в то время как я до сих пор вижу название региона и имеет простой визуальный делитель.

Сложенный результат:

 ////////////////////////// /* REGION A */ { ////////////////////////// /* REGION B */ { 

Если вы используете notepad ++, вы можете определить такую ​​вещь с идеей в диалоге с языком, определяемым пользователем, а так как старый добрый регион начинается с знака фунта, он отлично работает, потому что фунт «#» на самом деле является одним из способов отметить в php a комментарий. Но, я попробовал его в версии 6.6.6 из блокнота ++, и у него уже есть #region #endregion функциональность уже не нужно ничего делать.

Вы могли бы просто использовать фигурные скобки {}, но это действительно зависит от вашего редактора.

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

PhpStorm поддерживает сворачивание кода, аналогичное C #:

 #region [comment about what the code does] code.... #endregion 

Я использую Geany в Linux для выполнения моего PHP-программирования, и он поддерживает #region и #endregion для маркировки областей кода и работает так же, как MS Visual Studio, на языке C #.

PHP-комментарии могут быть выполнены с использованием //, / * и * / и # тоже, поэтому PHP просто обойдет эти строки, начиная с #, и это зависит от вашего текстового редактора / IDE, чтобы использовать это … И Geany делает !

Я знаю, что это старая нить, но на случай, если вас это интересует.

Я успешно выполнил сложение кода #region / #endregion в emacs, адаптировав этот пример кода в режим php: http://blogs.msdn.com/b/dotnetinterop/archive/2008/04/14/making-hideshow-el -работа-с-CSharp-режим-эль-и-область-endregion.aspx

Результат здесь:

 ; ===== PHP style region folding (defun php-hs-forward-sexp (&optional arg) "I set hs-forward-sexp-func to this function. I found this customization necessary to do the hide/show magic in PHP code, when dealing with region/endregion. This routine goes forward one s-expression, whether it is defined by curly braces or region/endregion. It handles nesting, too. The forward-sexp method takes an arg which can be negative, which indicates the move should be backward. Therefore, to be fully correct this function should also handle a negative arg. However, the hideshow.el package never uses negative args to its hs-forward-sexp-func, so it doesn't matter that this function does not do negative numbers. The arg can also be greater than 1, which means go forward multiple times. This function doesn't handle that EITHER. But again, I haven't see that as a problem." (message "php-hs-forward-sexp, (arg %d) (point %d)..." (if (numberp arg) arg -1) (point) ) (let ((nestlevel 0) (mark1 (point)) (done nil) ) (if (and arg (< arg 0)) (message "negative arg (%d) is not supported..." arg) ;; else, we have a positive argument, hence move forward. ;; simple case is just move forward one brace (if (looking-at "{") (forward-sexp arg) ; The more complex case is dealing with a "region/endregion" block. ; We have to deal with nested regions! (and (while (not done) (re-search-forward "^[ \\t]*#[ \\t]*\\(region\\|endregion\\)\\b" (point-max) 'move) (cond ((eobp)) ; do nothing if at end of buffer ((and (match-beginning 1) ;; if the match is longer than 6 chars, we know it is "endregion" (if (> (- (match-end 1) (match-beginning 1)) 6) (setq nestlevel (1- nestlevel)) (setq nestlevel (1+ nestlevel)) ) ))) (setq done (not (and (> nestlevel 0) (not (eobp))))) ); while (if (= nest 0) (goto-char (match-end 2)) ) )) ) ) ) (unless (assoc 'php-mode hs-special-modes-alist) (push '(php-mode ; "\\(^\\s*#\\s*region\\b\\)\\|{" ; regexp for start block DID NOT WORK "\\(^[ \\t]*#[ \\t]*region\\b\\)\\|{" ; regexp for start block ; "\\(^\\s*#\\s*endregion\\b\\)\\|}" ; regexp for end block NO WORKY! "\\(^[ \\t]*#[ \\t]*endregion\\b\\)\\|}" ; regexp for end block "/[*/]" ; regexp for comment start php-hs-forward-sexp ; hs-forward-sexp-func hs-c-like-adjust-block-beginning ; c-like adjust (1 char) ;php-hs-adjust-block-beginning ; php adjust ? ) hs-special-modes-alist) ) ;; ;; To use this, put this into your php-mode-hook: ;; ; for hide/show support (add-hook 'php-mode-hook 'php-region-mode-stuff) (defun php-region-mode-stuff () (hs-minor-mode 1) (setq hs-isearch-open t) ; with point inside the block, use these keys to hide/show (local-set-key "\Cc>" 'hs-hide-block) (local-set-key "\Cc<" 'hs-show-block) ) 

В Sublime Text есть пакет под названием SyntaxFold .

Монтаж

  1. Ctrl + Shift + P установить и выбрать « Управление пакетами: установить пакет» ;
  2. В новом меню введите SyntaxFold , начните загрузку и установку, выбрав его;
  3. Проверьте, находится ли строка состояния ниже, если она была установлена ​​правильно.

конфигурация

  1. Нажмите Shift + F5, чтобы открыть панель сложения, и выберите « Добавить еще» для доступа к конфигурационному файлу;
  2. Убедитесь, что он имеет значение по умолчанию со строками, которые вы хотите (по какой-то нечетной причине у меня была цитата перед хэшем: '#Start ). Я в конечном итоге меняю его на:

     { //you can change in here other config options "default": { "endMarker": "#EOB", "name": "Default", "startMarker": "#BOB" } } 
  3. Вы также можете изменить привязки клавиш (те, которые приведены ниже в разделе « Использование ») в Windows, изменив их в файле:

    C: \ Users \ YOUR_USER \ AppData \ Roaming \ Sublime Text 3 \ Packages \ SyntaxFold \ Default (Windows) .sublime-keymap

Применение

  1. Добавьте теги, которые вы указали в файле конфигурации (вы можете добавить описание после каждого тега), в моем случае:

     #BOB pandora box public function alpha() { # code... } public function omega() { # code... } #EOB pandora box 
  2. Чтобы скрыть код между тегами, поместите курсор между ними и дважды нажмите Alt + 1 .
  3. Чтобы снова показать его, поместите курсор на первый тег и дважды нажмите Alt + Shift + 1 .

Альтернатива для блоков комментариев

Если вас просто интересуют складывающиеся блоки комментариев, то с помощью пакета Fold Comments вы можете нажать Ctrl + Shift + C, чтобы скрыть и показать все комментарии (это может скрыть теги SyntaxFold).