PageRenderTime 80ms CodeModel.GetById 2ms app.highlight 67ms RepoModel.GetById 1ms app.codeStats 0ms

/doc/t3php/t3php-mode.info

https://github.com/joachimmathes/punkt_emacs
Unknown | 261 lines | 200 code | 61 blank | 0 comment | 0 complexity | 231e0ec4cb59b7fa93a26d28fb451147 MD5 | raw file

Large files files are truncated, but you can click here to view the full file

   1This is t3php-mode.info, produced by makeinfo version 4.13 from
   2t3php-mode.texi.
   3
   4This manual introduces a TYPO3-PHP major mode for Emacs, which is
   5specialized on editing PHP code in the TYPO3 world.
   6
   7   Copyright (C) 2009 Joachim Mathes.
   8
   9     This program is free software; you can redistribute it and/or
  10     modify it under the terms of the GNU General Public License as
  11     published by the Free Software Foundation; either version 2 of the
  12     License, or (at your option) any later version.
  13
  14     This program is distributed in the hope that it will be useful, but
  15     WITHOUT ANY WARRANTY; without even the implied warranty of
  16     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  17     General Public License for more details.
  18
  19     You should have received a copy of the GNU General Public License
  20     along with this program; if not, write to the Free Software
  21     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
  22     02110-1301, USA.
  23
  24
  25File: t3php-mode.info,  Node: Top,  Next: Introduction,  Up: (dir)
  26
  27TYPO3-PHP Mode
  28**************
  29
  30This manual introduces a TYPO3-PHP major mode for Emacs, which is
  31specialized on editing PHP code in the TYPO3 world.
  32
  33   Copyright (C) 2009 Joachim Mathes.
  34
  35     This program is free software; you can redistribute it and/or
  36     modify it under the terms of the GNU General Public License as
  37     published by the Free Software Foundation; either version 2 of the
  38     License, or (at your option) any later version.
  39
  40     This program is distributed in the hope that it will be useful, but
  41     WITHOUT ANY WARRANTY; without even the implied warranty of
  42     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  43     General Public License for more details.
  44
  45     You should have received a copy of the GNU General Public License
  46     along with this program; if not, write to the Free Software
  47     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
  48     02110-1301, USA.
  49
  50* Menu:
  51
  52* Introduction:: TYPO3-PHP and Emacs
  53* Installation:: Prepare Emacs
  54* Using T3PHP mode:: Features, commands and key bindings
  55* TYPO3 Coding Guidelines::
  56* Key Index::
  57* Variable Index::
  58* Function Index::
  59
  60
  61File: t3php-mode.info,  Node: Introduction,  Next: Installation,  Prev: Top,  Up: Top
  62
  631 Introduction
  64**************
  65
  66This manual describes T3PHP mode, which extends Emacs with functionality
  67for editing TYPO3-PHP files. Of course, it is also useful for PHP
  68coding in general.
  69
  70   GNU Emacs is an extensible, customizable text editor and can be
  71obtained for free from `http://ftp.gnu.org/pub/gnu/emacs/'. *Note
  72Preface: (emacs)Top. The code is written and tested on GNU Emacs
  73version 23.1.1.
  74
  75
  76File: t3php-mode.info,  Node: Installation,  Next: Using T3PHP mode,  Prev: Introduction,  Up: Top
  77
  782 Installation
  79**************
  80
  81To install T3PHP Mode just drop file `t3php-mode.el' into a directory
  82on your load-path. If you are the administrator of the system you are
  83working on, a possible directory could be
  84`/usr/share/emacs/site-lisp/t3php-mode', for example. You might
  85byte-compile it for better performance. *Note Byte Compilation:
  86(elisp)Byte Compilation.
  87
  88   To set up Emacs to automatically edit files ending in `.php' using
  89T3PHP Mode, add the following lines to your `~/.emacs' file (GNU Emacs)
  90or `~/.xemacs/init.el' file (XEmacs):
  91     (setq auto-mode-alist (cons '("\\.php$" . t3php-mode) auto-mode-alist))
  92     (autoload 't3php-mode "t3php-mode" "TYPO3-PHP input file editing mode." t)
  93   If you just want to test T3PHP Mode or are not eager to modify your
  94`~/.emacs' file, type `M-x load-file', load the `t3php-mode.el' file
  95and finally apply the mode to the current buffer by typing `M-x
  96t3php-mode'.
  97
  98
  99File: t3php-mode.info,  Node: Using T3PHP mode,  Next: TYPO3 Coding Guidelines,  Prev: Installation,  Up: Top
 100
 1013 Using T3PHP mode
 102******************
 103
 104TYPO3 Mode supports different display and editing features, which will
 105be described in the following sections.
 106
 107* Menu:
 108
 109* Customization::
 110* Syntax highlighting::
 111* Line indentation::
 112* Inserting code templates::
 113* Inserting classes::
 114* Buffer outline::
 115
 116
 117File: t3php-mode.info,  Node: Customization,  Next: Syntax highlighting,  Up: Using T3PHP mode
 118
 1193.1 Customization
 120=================
 121
 122T3PHP Mode defines a customization group in Emacs, which is a member of
 123the Emacs standard customization group `Languages', whose parent Emacs
 124group is `Programming'. Use `M-x customize' to browse through the full
 125list of customization groups or `M-x customize-group' with parameter
 126`t3php' to enter the T3PHP Mode customization group directly
 127
 128The following user-customizable variables are provided.
 129
 130 -- Variable: string t3php-developer
 131     The current developer or author of the PHP code. The value of this
 132     variable is used in the php-doc comments.
 133
 134     Default: `Lisa Fremont <lisa@fremont.de>'
 135
 136 -- Variable: string t3php-typo3-extension-directory
 137     The path to the TYPO3 extensions' directory relative to the TYPO3
 138     root directory.
 139
 140     Default: `ext/'
 141
 142 -- Variable: string t3php-path-to-typo3-extension-directory
 143     The path to the TYPO3 extensions directory relative to the TYPO3
 144     root directory.
 145
 146     Default: `typo3conf/'
 147
 148 -- Variable: string t3php-date-format
 149     The date format which is used for php-doc comments.
 150
 151     Default: `%Y-%m-%d'
 152
 153 -- Variable: string t3php-year-format
 154     The year format which is used in php-doc comments.
 155
 156     Default: `%Y'
 157
 158 -- Variable: integer t3php-block-indentation
 159     The indentation relative to a predecessing line which begins a new
 160     code block.
 161
 162     Default: `4'
 163
 164 -- Variable: choice t3php-newline-function
 165     This variable decides which function to call upon pressing
 166     `<RET>'. Depending on the chosen option, line indentation will be
 167     processed automatically. The following options are available for
 168     CHOICE:
 169    `newline'
 170          This command just inserts newlines into the current buffer
 171          before point.
 172
 173    `newline-and-indent'
 174          This function inserts a newline(1), then indents the new line
 175          (the one following the newline just inserted) according to
 176          T3PHP Mode's internal indentation strategies.
 177
 178    `reindent-then-newline-and-indent'
 179          This command reindents the current line, inserts a newline at
 180          point, and then indents the new line (the one following the
 181          newline just inserted).
 182
 183     Default: `newline'.
 184
 185 -- Variable: boolean t3php-php-doc-align
 186     Determines whether the PHPDoc parameters are aligned after a
 187     method or class is inserted with `t3php-insert-method' or
 188     `t3php-insert-class' respectively. See *note Inserting methods::
 189     and *note Inserting classes::, for more information.
 190
 191     Aligned parameters:
 192     1  /**
 193     2   * Define foobar
 194     3   *
 195     4   * @param   $foo
 196     5   * @param   $bar
 197     6   * @return
 198     7   * @author  Lisa Fremont <lisa@fremont.de>
 199     8   * @since   2009-12-02
 200     9   */
 201     10 public function foobar($foo, $bar) {
 202     11
 203     12 }
 204
 205     Unaligned parameters:
 206     1  /**
 207     2   * Define foobar
 208     3   *
 209     4   * @param $foo
 210     5   * @param $bar
 211     6   * @return
 212     7   * @author Lisa Fremont <lisa@fremont.de>
 213     8   * @since 2009-12-02
 214     9   */
 215     10 public function foobar($foo, $bar) {
 216     11
 217     12 }
 218
 219     Default: `t'
 220
 221 -- Variable: string t3php-php-manual-url
 222     URL at which to find PHP manual. You can replace `en' with your ISO
 223     language code.
 224
 225     Default: `http://www.php.net/manual/en/'
 226
 227 -- Variable: string t3php-php-search-url
 228     URL at which to search for documentation on a word, e.g. a PHP
 229     function.
 230
 231     Default: `http://www.php.net/manual/en/'
 232
 233 -- Variable: boolean t3php-outline-keep-other-windows
 234     When the outline is viewed, the boolean value of this variable
 235     decides if the currently selected T3PHP Mode buffer will be
 236     deleted. If the variable is set to true (`t') the current window is
 237     split and the outline is displayed in the newly created window.
 238     When `nil', all other windows except the selected one will be
 239     deleted, so that the outline window fills an adjustable (*note
 240     t3php-outline-split-windows-fraction: x-stswf.) amount of the
 241     frame.
 242
 243     Default: `t'.
 244
 245 -- Variable: boolean t3php-outline-split-windows-horizontally
 246     This variable determines the splitting mode, if the outline is
 247     displayed. If true, split the current window horizontally.
 248     Otherwise split the window vertically.
 249
 250     Default: `nil'.
 251
 252     I must admit, that sometimes I get confused. So if it is not for
 253     your orientation, at least it is for mine. :-)
 254
 255     [image src="images/split_v.png" alt="Splitting a window vertically" text="+-------+         +-------+
 256     |       |         |       |
 257     |       |  split  |       |
 258     |       |  -----> +-------+
 259     |       |    v    |       |
 260     |       |         |       |
 261     +-------+         +-------+
 262     "]
 263     Figure 3.1: Splitting a window _vertically_.
 264
 265     [image src="images/split_h.png" alt="Splitting a window horizontally" text="+-------+         +---+---+
 266     |       |         |   |   |
 267     |       |  split  |   |   |
 268     |       |  -----> |   |   |
 269     |       |    h    |   |   |
 270     |       |         |   |   |
 271     +-------+         +---+---+
 272     "]
 273     Figure 3.2: Splitting a window _horizontally_.
 274
 275
 276 -- Variable: number t3php-outline-split-windows-fraction
 277     This variable describes the fraction of the width or height of the
 278     window, which is used for the outline.
 279
 280     Default: `.3'.
 281
 282 -- Variable: boolean t3php-outline-follow-mode
 283     If true, point in outline buffer will make T3PHP window to follow.
 284     It will show the corresponding part of the document. This flag can
 285     be toggled from within the outline buffer with the `f' key.
 286
 287     Default: `nil'.
 288
 289 -- Variable: color t3php-outline-hl-line-color
 290     The color used to highlight the background of the horizontal line
 291     which marks the current line of the outline buffer and the
 292     corresponding line in the T3PHP buffer when follow mode is active.
 293
 294     Default: `DarkSlateBlue'.
 295
 296 -- Variable: color t3php-outline-method-name-color
 297     The color used to highlight the lines in the outline, which refer
 298     to the corresponding method.
 299
 300     Default: `sea green'.
 301
 302   ---------- Footnotes ----------
 303
 304   (1) Note the different meanings of _newline_ and _new line_, that
 305goes with their different spellings. _newline_ refers to the code
 306representation of a new line, while _new line_ means its interpretation
 307as a visible new line in the editor after pressing `<RET>'.
 308
 309
 310File: t3php-mode.info,  Node: Syntax highlighting,  Next: Line indentation,  Prev: Customization,  Up: Using T3PHP mode
 311
 3123.2 Syntax highlighting
 313=======================
 314
 315Syntax highlighting is a convenient feature of an editor to improve the
 316appearance hence the readability of code. TYPO3 Mode supports the
 317highlighting of single line and multiline comments, keywords and several
 318syntactic structures.
 319
 320   In XEmacs syntax highlighting should be enabled automatically. In GNU
 321Emacs you may have to add these lines to your `~/.emacs' file:
 322     (global-font-lock-mode t)
 323     (setq font-lock-maximum-decoration t)
 324
 325
 326File: t3php-mode.info,  Node: Line indentation,  Next: Inserting code templates,  Prev: Syntax highlighting,  Up: Using T3PHP mode
 327
 3283.3 Line indentation
 329====================
 330
 331A PHP code line is indented automatically when the <TAB> key is pressed
 332while point is on the according line. The indentation takes place with
 333respect to the indentation of previous lines. *Note Customization::,
 334for details. The default width is `4'.
 335
 336   Depending on the current value of the customizable variable
 337T3PHP-NEWLINE-FUNCTION, line indentation might be executed
 338automatically after pressing `<RET>'. *Note Customization::, for
 339details.
 340
 341
 342File: t3php-mode.info,  Node: Inserting code templates,  Prev: Line indentation,  Up: Using T3PHP mode
 343
 3443.4 Inserting code templates
 345============================
 346
 347The following sections describe functions and their respective key
 348bindings to insert templates for methods and classes.
 349
 350* Menu:
 351
 352* Inserting methods::
 353* Inserting classes::
 354
 355
 356File: t3php-mode.info,  Node: Inserting methods,  Next: Inserting classes,  Up: Inserting code templates
 357
 3583.4.1 Inserting methods
 359-----------------------
 360
 361 -- Interactive Command: t3php-insert-method
 362     Insert the rudimentary method framework code with respect to TYPO3
 363     coding standards. The function asks interactively for the method
 364     name, an auto-completed modifier (`public', `protected',
 365     `private') and method arguments until an empty string is provided.
 366     The inserted code consists of
 367        * a class header comment in PHPdoc style which contains
 368             - empty lines for method descriptions
 369
 370             - `@param' and variable name
 371
 372             - `@return'
 373
 374             - `@author' (default: `t3php-developer')
 375
 376             - `@since' (default: `t3php-date-format')
 377
 378        * the method signature
 379
 380     Key binding: `C-c C-if'.
 381The following example was inserted with parameters
 382   * Method name: `foobar'
 383
 384   * Modifier: `public'
 385
 386   * Parameter: `foo'
 387
 388   * Parameter: `bar'
 389
 3901  /**
 3912   *
 3923   *
 3934   * @param $foo
 3945   * @param $bar
 3956   * @return
 3967   * @author Lisa Fremont <lisa@fremont.de>
 3978   * @since 2009-12-02
 3989   */
 39910 public function foobar($foo, $bar) {
 40011
 40112 }
 402
 403
 404File: t3php-mode.info,  Node: Inserting classes,  Next: Buffer outline,  Prev: Inserting methods,  Up: Inserting code templates
 405
 4063.4.2 Inserting classes
 407-----------------------
 408
 409 -- Interactive Command: t3php-insert-class
 410     Insert the rudimentary class framework code with respect to TYPO3
 411     coding standards. The inserted code consists of
 412        * PHP tags
 413
 414        * a copyright notice where date and author are inserted
 415          automatically with respect to customizable variables
 416          `t3php-year-format' and `t3php-developer'. See *note
 417          t3php-year-format: x-t3php-year-format. and *note
 418          x-t3php-developer: x-t3php-developer, for more information.
 419
 420        * a marker comment for the class and function index which can
 421          be inserted by TYPO3 extension _extdeval_. The following
 422          empty lines might be filled with required files.
 423
 424        * a class header comment in PHPdoc style which contains
 425             - `@author' (default: `t3php-developer')
 426
 427             - `@package' (default: `TYPO3')
 428
 429             - `@subpackage' (default: empty)
 430
 431             - `@since' (default: `t3php-date-format')
 432
 433        * the class definition
 434
 435        * a TYPO3 XCLASS inclusion code snippet for class extension
 436          and/or overriding. The associative array `TYPO3_CONF_VARS'
 437          has a key which refers to the current class path and file
 438          name, which is inserted dynamically. The information is
 439          extracted from the customizable variables
 440          `t3php-path-to-typo3-extension-directory' and the buffer file
 441          name. See *note t3php-typo3-extension-directory:
 442          x-t3php-typo3-extension-directory, for more information.
 443
 444     Key binding: `C-c C-ic'.
 445The following code example was inserted in an empty file named
 446`class.bar.php':
 4471  <?php
 4482  /***************************************************************
 4493   *  Copyright notice
 4504   *
 4515   *  (c) 2009 Lisa Fremont <lisa@fremont.de>
 4526   *  All rights reserved
 4537   *
 4548   *  This script is part of the TYPO3 project. The TYPO3 project is
 4559   *  free software; you can redistribute it and/or modify
 45610  *  it under the terms of the GNU General Public License as published by
 45711  *  the Free Software Foundation; either version 2 of the License, or
 45812  *  (at your option) any later version.
 45913  *
 46014  *  The GNU General Public License can be found at
 46115  *  http://www.gnu.org/copyleft/gpl.html.
 46216  *
 46317  *  This script is distributed in the hope that it will be useful,
 46418  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 46519  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 46620  *  GNU General Public License for more details.
 46721  *
 46822  *  This copyright notice MUST APPEAR in all copies of the script!
 46923  ***************************************************************/
 47024 /**
 47125  * [CLASS/FUNCTION INDEX of SCRIPT]
 47226  *
 47327  * Hint: use extdeveval to insert/update function index above.
 47428  */
 47529
 47630
 47731
 47832
 47933
 48034 /**
 48135  *
 48236  *
 48337  * @author     Lisa Fremont <lisa@fremont.de>
 48438  * @package    TYPO3
 48539  * @subpackage
 48640  * @since      2009-12-02
 48741  */
 48842 class tslib_content {
 48943
 49044 }
 49145
 49246
 49347 /*******************************************************************************
 49448  * TYPO3 XCLASS INCLUSION (for class extension/overriding)
 49549  ******************************************************************************/
 49650 if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/foo/class.bar.php']) {
 49751     include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/foo/class.bar.php']);
 49852 }
 49953 ?>
 500
 501
 502File: t3php-mode.info,  Node: Buffer outline,  Prev: Inserting classes,  Up: Using T3PHP mode
 503
 5043.5 Buffer outline
 505==================
 506
 507The outline buffer summarizes the methods of the PHP buffer and provides
 508comfortable navigation through the PHP buffer. The first three lines are
 509intangible and show the file name of the current PHP input file and the
 510shortcuts of the most important commands.
 511
 512   Each method in the current PHP buffer is referred to by its name. The
 513maximally displayed line width of a method name is limited to 40
 514characters. Thus, a longer name is chopped to a length of 40 characters
 515and ellipse characters (`...') are concatenated. When you move the
 516mouse cursor over a method name the complete name is displayed
 517nevertheless. On graphical displays, it is displayed as a _tooltip_ or
 518_balloon help_ as it is called sometimes. On some systems, it is shown
 519in the echo area. On text-only terminals, Emacs can't follow the mouse,
 520and therefore is not able to show the complete name on mouse-over.
 521
 522   The character and color of the leftmost column indicates the type of
 523method modifier:
 524`private'
 525     `[-]' (color: `firebrick')
 526
 527`protected'
 528     `[#]' (color: `goldenrod')
 529
 530`public'
 531     `[+]' (color: `forest green')
 532
 533   The rightmost column presents the line numbers, which delimit the
 534region of the respective measurement block.
 535TABLE OF CONTENTS of ~/public_html/typo3/t3lib/class.t3lib_extmgm.php
 536SPC=view TAB=goto RET=goto+kill [f]ollow [r]escan  [k]ill [?]Help
 537-----------------------------------------------------------------------
 538[P] isLoaded                                      [  131-136  ]
 539[P] extPath                                       [  147-155  ]
 540[P] extRelPath                                    [  165-172  ]
 541[P] siteRelPath                                   [  182-185  ]
 542[P] getCN                                         [  194-197  ]
 543[P] addTCAcolumns                                 [  227-235  ]
 544[P] addToAllTCAtypes                              [  251-304  ]
 545[P] allowTableOnStandardPages                     [  315-320  ]
 546[P] addModule                                     [  332-378  ]
 547[P] addModulePath                                 [  390-395  ]
 548[P] insertModuleFunction                          [  412-421  ]
 549[P] addPageTSConfig                               [  431-435  ]
 550[P] addUserTSConfig                               [  445-449  ]
 551[P] addLLrefForTCAdescr                           [  460-472  ]
 552
 553 -- Interactive Command: t3php-outline rescan
 554     This command shows the outline of the current PHP buffer. If
 555     RESCAN is true, the PHP buffer will be rescanned before the ouline
 556     buffer is displayed.
 557
 558     Key binding `C-ct'.
 559
 560The outline buffer is a read-only buffer with few dedicated key
 561bindings:
 562`n'
 563     Move to the next selectable item.
 564
 565`<RIGHT>'
 566     Move to the next selectable item.
 567
 568`<DOWN>'
 569     Move to the next selectable item.
 570
 571`p'
 572     Move to the previous selectable item.
 573
 574`<LEFT>'
 575     Move to the previous selectable item.
 576
 577`<UP>'
 578     Move to the previous selectable item.
 579
 580`C-<HOME>'
 581     Move to the beginning of the outline buffer.
 582
 583`C-<END>'
 584     Move to the end of the outline buffer.
 585
 586`<SPC>'
 587     Show the corresponding location of the TYPO3 buffer.
 588
 589`<TAB>'
 590     Go to the corresponding location of the TYPO3 buffer and keep the
 591     outline window.
 592
 593`<RET>'
 594     Go to the corresponding location of the TYPO3 buffer and hide the
 595     outline window.
 596
 597`f'
 598     Toggle follow mode.
 599
 600`r'
 601     Re-parse the TYPO3 buffer.
 602
 603`k'
 604     Kill the outline buffer.
 605
 606`?'
 607     Show a help buffer.
 608
 609
 610File: t3php-mode.info,  Node: TYPO3 Coding Guidelines,  Next: Key Index,  Prev: Using T3PHP mode,  Up: Top
 611
 612Appendix A TYPO3 Coding Guidelines
 613**********************************
 614
 615This appendix refers to the section _PHP file formatting_ of the manual
 616`TYPO3 Coding Guidelines' by the _TYPO3 Core Development Team_. I
 617decided to append this documentation to have a reference nearby,
 618whenever I think of extending any T3PHP Mode features.
 619
 620* Menu:
 621
 622* General requirements::
 623* File structure::
 624* PHP syntax formatting::
 625* Using phpDoc::
 626* The ChangeLog file::
 627
 628
 629File: t3php-mode.info,  Node: General requirements,  Next: File structure,  Up: TYPO3 Coding Guidelines
 630
 631A.1 General requirements
 632========================
 633
 634* Menu:
 635
 636* PHP tags::
 637* Line breaks::
 638* Line length::
 639* Whitespace and indentation::
 640* Character set::
 641
 642
 643File: t3php-mode.info,  Node: PHP tags,  Next: Line breaks,  Up: General requirements
 644
 645A.1.1 PHP Tags
 646--------------
 647
 648Each PHP file in TYPO3 must use full PHP tags. There must be exactly one
 649pair of opening and closing tags (no closing and opening tags in the
 650middle of the file). Example:
 651<?php
 652    // File content goes here
 653?>
 654   There must be no empty lines after the closing PHP tag. Empty lines
 655after closing tags break output compression in PHP and/or result in AJAX
 656errors.
 657
 658
 659File: t3php-mode.info,  Node: Line breaks,  Next: Line length,  Prev: PHP tags,  Up: General requirements
 660
 661A.1.2 Line breaks
 662-----------------
 663
 664TYPO3 uses Unix line endings (`\n', PHP `chr(10)'). If a developer uses
 665Windows or Mac OS X platform, the editor must be configured to use Unix
 666line endings.
 667
 668
 669File: t3php-mode.info,  Node: Line length,  Next: Whitespace and indentation,  Prev: Line breaks,  Up: General requirements
 670
 671A.1.3 Line length
 672-----------------
 673
 674Line length is limited to 80 characters. Longer lines should be split to
 675several lines. Each line fragment starting from the second must be
 676indented with one or more tab characters. Example:
 677       $rows = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows('uid, title', 'pages',
 678                    'pid=' . $this->fullQuoteStr($this->pid, 'pages') .
 679                    $this->cObj->enableFields('pages'), '', 'title');
 680   In certain cases splitting lines exactly at 80 characters is not
 681feasible. In this case lines can be longer but such practice is
 682discouraged.
 683
 684
 685File: t3php-mode.info,  Node: Whitespace and indentation,  Next: Character set,  Prev: Line length,  Up: General requirements
 686
 687A.1.4 Whitespace and indentation
 688--------------------------------
 689
 690TYPO3 uses tab characters to indent source code. One indentation level
 691is one tab. There must be no white spaces in the end of a line. This
 692can be done manually or using a text editor that takes care of this.
 693
 694Spaces must be added:
 695
 696   * on both sides of string, arithmetic, assignment and other similar
 697     operators (for example, `.', `=', `+', - , `?', `:', `*', etc)
 698
 699   * after commas
 700
 701   * in single line comments after the comment sign (double slash)
 702
 703   * after asterisks in multiline comments
 704
 705
 706File: t3php-mode.info,  Node: Character set,  Prev: Whitespace and indentation,  Up: General requirements
 707
 708A.1.5 Character set
 709-------------------
 710
 711TYPO3 PHP files use iso-8859-1 character set.
 712
 713All XML files use UTF-8 character set.
 714
 715
 716File: t3php-mode.info,  Node: File structure,  Next: PHP syntax formatting,  Prev: General requirements,  Up: TYPO3 Coding Guidelines
 717
 718A.2 File structure
 719==================
 720
 721TYPO3 files use the following structure:
 722  1. Opening PHP tag
 723
 724  2. Copyright notice
 725
 726  3. File information block (with optional function index) in phpDoc
 727     format
 728
 729  4. Included files
 730
 731  5. Class information block in phpDoc format
 732
 733  6. PHP class
 734
 735  7. XCLASS declaration
 736
 737  8. Optional module execution code (for example, in eID classes)
 738        The following sections discuss each of these parts.
 739
 740* Menu:
 741
 742* Copyright notice::
 743* File information block::
 744* Included files::
 745* Class information block::
 746* PHP class::
 747* XCLASS declaration::
 748* Optional module execution code::
 749
 750
 751File: t3php-mode.info,  Node: Copyright notice,  Next: File information block,  Up: File structure
 752
 753A.2.1 Copyright notice
 754----------------------
 755
 756TYPO3 is released under the terms of GNU General Public License version
 7572 or any later version. The copyright notice with a reference to the GPL
 758must be included at the top of every TYPO3 PHP class file. `user_'
 759files must have this copyright notice as well. Example:
 760<?php
 761/***************************************************************
 762 *  Copyright notice
 763 *
 764 *  (c) YYYY Your name here (your@email.here)
 765 *  All rights reserved
 766 *
 767 *  This script is part of the TYPO3 project. The TYPO3 project is
 768 *  free software; you can redistribute it and/or modify
 769 *  it under the terms of the GNU General Public License as published by
 770 *  the Free Software Foundation; either version 2 of the License, or
 771 *  (at your option) any later version.
 772 *
 773 *  The GNU General Public License can be found at
 774 *  http://www.gnu.org/copyleft/gpl.html.
 775 *  A copy is found in the textfile GPL.txt and important notices to the license
 776 *  from the author is found in LICENSE.txt distributed with these scripts.
 777 *
 778 *
 779 *  This script is distributed in the hope that it will be useful,
 780 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 781 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 782 *  GNU General Public License for more details.
 783 *
 784 *  This copyright notice MUST APPEAR in all copies of the script!
 785 ***************************************************************/
 786
 787This notice may not be altered except for the year, author name and
 788author e-mail.
 789
 790
 791File: t3php-mode.info,  Node: File information block,  Next: Included files,  Prev: Copyright notice,  Up: File structure
 792
 793A.2.2 File information block
 794----------------------------
 795
 796File information block follows the copyright statement and provides
 797basic information about the file. It should include file name,
 798description of the file and information about the author (or authors).
 799Example:
 800/**
 801 * class.tx_myext_pi1.php
 802 *
 803 * Provides XYZ plugin implementation.
 804 *
 805 * $Id: class.tx_myext_pi1.php 9514 2008-07-23 17:06:12Z john_doe $
 806 *
 807 * @author John Doe <john.doe@example.com>
 808 */
 809 The example above uses SVN $Id$ meta keyword. SVN will expand it to a
 810full version string when the file is committed.  The file information
 811block can also contain the optional function index. This index is
 812created and updated by the extdeveval extension.
 813
 814
 815File: t3php-mode.info,  Node: Included files,  Next: Class information block,  Prev: File information block,  Up: File structure
 816
 817A.2.3 Included files
 818--------------------
 819
 820Files are included using `require_once' function. All TYPO3 files must
 821use absolute paths in calls to `require_once'. There are two ways to
 822obtain the path to the included file:
 823
 824  1. Use one of the predefined TYPO3 constants: `PATH_tslib',
 825     `PATH_t3lib', `PATH_typo3', `PATH_site'. The first three contain
 826     absolute paths to the corresponding TYPO3 directories. The last
 827     constant contains absolute path to the TYPO3 root directory.
 828     Example: require_once(PATH_tslib . 'class.tslib_pibase.php');
 829
 830  2. Use `t3lib_extMgm::extPath()' function. This function accepts two
 831     arguments: extension key and path to the included file. The second
 832     argument is optional but recommended to use. Examples: require_once(t3lib_extMgm::extPath('lang', 'lang.php'));
 833     require_once(t3lib_extMgm::extPath('lang') . 'lang.php');
 834        Always use one of these two ways to include files. This is
 835required to include files even from the current directory. Some
 836installations do not have the current directory in the PHP include path
 837and `require_once' without a proper path will result in fatal PHP error.
 838
 839
 840File: t3php-mode.info,  Node: Class information block,  Next: PHP class,  Prev: Included files,  Up: File structure
 841
 842A.2.4 Class information block
 843-----------------------------
 844
 845Class information block is similar to the file information block and
 846describes the class in the file. Example:
 847/**
 848 * This class provides XYZ plugin implementation.
 849 *
 850 * @author John Doe <john.doe@example.com>
 851 * @author Jane Doe <jane.doe@example.com>
 852 */
 853
 854
 855File: t3php-mode.info,  Node: PHP class,  Next: XCLASS declaration,  Prev: Class information block,  Up: File structure
 856
 857A.2.5 PHP class
 858---------------
 859
 860PHP class follows the Class information block. PHP code must be
 861formatted as described in *note PHP syntax formatting::.  The class name
 862is expected to follow some conventions. The namespace and path parts are
 863all lowercase and separated by underscores (`_'). At the end comes the
 864"true" class name which must be written in upper camel case.  Taking
 865again the example of file
 866`class.t3lib_cache_backend_abstractbackend.php', the PHP class
 867declaration will look like:
 868class t3lib_cache_backend_AbstractBackend {
 869    ...
 870}
 871
 872
 873File: t3php-mode.info,  Node: XCLASS declaration,  Next: Optional module execution code,  Prev: PHP class,  Up: File structure
 874
 875A.2.6 XCLASS declaration
 876------------------------
 877
 878The XCLASS declaration must follow the PHP class. The format of the
 879XCLASS is very important. No spaces can be added or removed, no
 880reformatting can be done to the declaration. If the formatting is
 881changed, the TYPO3 Extension Manager will complain about a missing
 882XCLASS declaration.
 883
 884   The XCLASS declaration must include proper path to the current class
 885file. The following example assumes that extension key is `myext', file
 886name is `class.tx_myext_pi1.php' and file is located in the `pi1'
 887subdirectory of the extension:
 888if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/myext/pi1/class.tx_myext_pi1.php'])    {
 889    include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/myext/pi1/class.tx_myext_pi1.php']);
 890}
 891
 892
 893File: t3php-mode.info,  Node: Optional module execution code,  Prev: XCLASS declaration,  Up: File structure
 894
 895A.2.7 Optional module execution code
 896------------------------------------
 897
 898Module execution code instantiates the class and runs its method(s).
 899Typically this code can be found in eID scripts and old Backend
 900modules. Here is how it may look like:
 901$controller = t3lib_div::makeInstance('tx_myext_ajaxcontroller');
 902$controller->main();
 903 This code must appear _after_ the XCLASS declaration. `$SOBE' is
 904traditional but not required name.
 905
 906
 907File: t3php-mode.info,  Node: PHP syntax formatting,  Next: Using phpDoc,  Prev: File structure,  Up: TYPO3 Coding Guidelines
 908
 909A.3 PHP syntax formatting
 910=========================
 911
 912* Menu:
 913
 914* Identifiers::
 915* Comments::
 916* Debug output::
 917* Curly braces::
 918* Conditions::
 919* Switch::
 920* Loops::
 921* Strings::
 922* Booleans::
 923* PHP5 features::
 924* Global variables::
 925* Functions::
 926
 927
 928File: t3php-mode.info,  Node: Identifiers,  Next: Comments,  Up: PHP syntax formatting
 929
 930A.3.1 Identifiers
 931-----------------
 932
 933All identifiers must use camelCase and start with a lower case letter.
 934Underscore characters are not allowed.  Abbreviations should be
 935avoided. Examples of good identifiers:
 936$goodName
 937$anotherGoodName
 938   Examples of bad identifiers:
 939$BAD_name
 940$unreasonablyLongNamesAreBadToo
 941$noAbbrAlwd
 942   Identifier names must be descriptive. However it is allowed to use
 943traditional integer variables like `$i', `$j', `$k' in for loops. If
 944such variables are used, their meaning must be absolutely clear from
 945the context where they are used.  The same rules apply to functions and
 946class methods. Examples:
 947protected function getFeedbackForm()
 948public function processSubmission()
 949   Class constants should be clear about what they define. Correct:
 950const USERLEVEL_MEMBER = 1;
 951   Incorrect:
 952const UL_MEMBER = 1;
 953   Variables on the global scope may use upper case and underscore
 954characters.  Examples:
 955$TYPO3_CONF_VARS
 956$TYPO3_DB
 957
 958
 959File: t3php-mode.info,  Node: Comments,  Next: Debug output,  Prev: Identifiers,  Up: PHP syntax formatting
 960
 961A.3.2 Comments
 962--------------
 963
 964Comments in the code are highly welcome and recommended. Inline comments
 965must precede the commented line and be indented by one tab. Example:
 966protected function processSubmission() {
 967              // Check if user is logged in
 968       if ($GLOBALS['TSFE']->fe_user->user['uid']) {
 969              ...
 970       }
 971}
 972   Class constants and variable comments should follow PHP doc style and
 973precede the variable. Variable type must be specified for non–trivial
 974types and optional for trivial types. Example:
 975       /** Number of images submitted by user */
 976       protected $numberOfImages;
 977       /**
 978         * Local instance of tslib_cObj class
 979         *
 980         * @var tslib_cObj
 981         */
 982       protected $localCobj;
 983   Single line comments are allowed when there is no type declaration
 984for the class variable or constant. If a variable can hold values of
 985different types, use `mixed' as type.
 986
 987
 988File: t3php-mode.info,  Node: Debug output,  Next: Curly braces,  Prev: Comments,  Up: PHP syntax formatting
 989
 990A.3.3 Debug output
 991------------------
 992
 993During development it is allowed to use `debug()' or
 994`t3lib_div::debug()' function calls to produce debug output. However
 995all debug statements must be removed (removed, not commented!) before
 996committing the code to the Subversion repository.
 997
 998
 999File: t3php-mode.info,  Node: Curly braces,  Next: Conditions,  Prev: Debug output,  Up: PHP syntax formatting
1000
1001A.3.4 Curly braces
1002------------------
1003
1004Usage of opening and closing curly braces is mandatory in all cases
1005where they can be used according to PHP syntax (except `case'
1006statements).
1007
1008   The opening curly brace is always on the same line as the preceding
1009construction. There must be a space (not a tab!) before the opening
1010brace. The opening brace is always followed by a new line.
1011
1012   The closing curly brace must start on a new line and be indented to
1013the same level as the construct with the opening brace. Example:
1014protected function getForm() {
1015       if ($this->extendedForm) {
1016             // generate extended form here
1017       } else {
1018             // generate simple form here
1019       }
1020}
1021The following is not allowed:
1022protected function getForm()
1023{
1024       if ($this->extendedForm) { // generate extended form here
1025       } else {
1026             // generate simple form here
1027       }
1028}
1029
1030
1031File: t3php-mode.info,  Node: Conditions,  Next: Switch,  Prev: Curly braces,  Up: PHP syntax formatting
1032
1033A.3.5 Conditions
1034----------------
1035
1036Conditions consist from `if', `elseif' and `else' keywords. TYPO3 code
1037must not use the `else if' construct.
1038
1039
1040The following is the correct layout for conditions:
1041        if ($this->processSubmission) {
1042              // Process submission here
1043        } elseif ($this->internalError) {
1044              // Handle internal error
1045        } else {
1046              // Something else here
1047        }
1048   Here is an example of the incorrect layout:
1049        if ($this->processSubmission) {
1050              // Process submission here
1051        }
1052        elseif ($this->internalError) {
1053              // Handle internal error
1054        } else { // Something else here
1055   It is recommended to create conditions so that shortest block goes
1056first. For example:
1057        if (!$this->processSubmission) {
1058              // Generate error message, 2 lines
1059        } else {
1060              // Process submission, 30 lines
1061        }
1062   If the condition is long, it must be split into several lines. Each
1063condition on the line starting from the second should be indented with a
1064two or more indents relative to the first line of the condition:
1065        if ($this->getSomeCodition($this->getSomeValiarble()) &&
1066                     $this->getAnotherCondition()) {
1067              // Code follows here
1068        }
1069   Ternary conditional operator must be used only if it has two
1070outcomes. Example:
1071$result = ($useComma ? ',' : '.');
1072   Wrong usage of ternary conditional operator:
1073$result = ($useComma ? ',' : $useDot ? '.' : ';');
1074   Assignment in conditions should be avoided. However if it makes
1075sense to do assignment in condition, it should be surrounded by the
1076extra pair of brackets. Example:
1077        if (($fields = $GLOBALS['TYPO3_DB']->sql_fetch_result($res))) {
1078              // Do something
1079        }
1080   The following is allowed but not recommended:
1081        if (false !== ($fields = $GLOBALS['TYPO3_DB']->sql_fetch_result($res))) {
1082              // Do something
1083        }
1084   The following is not allowed (missing the extra pair of brackets):
1085        while ($fields = $GLOBALS['TYPO3_DB']->sql_fetch_result($res)) {
1086              // Do something
1087        }
1088
1089
1090File: t3php-mode.info,  Node: Switch,  Next: Loops,  Prev: Conditions,  Up: PHP syntax formatting
1091
1092A.3.6 Switch
1093------------
1094
1095`case' statements are indented with a single indent (tab) inside the
1096`switch' statement. The code inside the `case' statements is further
1097indented with a single indent. The `break' statement is aligned with
1098the code. Only one `break' statement is allowed per `case'.
1099
1100   The `default' statement must be the last in the `switch' and must
1101not have a `break' statement.
1102
1103   If one `case' block has to pass control into another `case' block
1104without having a `break', there must be a comment about it in the code.
1105
1106Examples:
1107switch ($useType) {
1108      case 'extended':
1109            $content .= $this->extendedUse();
1110            // Fall through
1111      case 'basic':
1112            $content .= $this->basicUse();
1113            break;
1114      default:
1115            $content .= $this->errorUse();
1116}
1117
1118
1119File: t3php-mode.info,  Node: Loops,  Next: Strings,  Prev: Switch,  Up: PHP syntax formatting
1120
1121A.3.7 Loops
1122-----------
1123
1124The following loops can be used:
1125   * `do'
1126
1127   * `while'
1128
1129   * `for'
1130
1131   * `foreach'
1132   The use of each is not allowed in loops.
1133
1134   `for' loops must contain only variables inside (no function calls).
1135The following is correct:
1136      $size = count($dataArray);
1137      for ($element = 0; $element < $size; $element++) {
1138            // Process element here
1139      }
1140   The following is not allowed:
1141      for ($element = 0; $element < count($dataArray); $element++) {
1142            // Process element here
1143      }
1144   `do' and `while' loops must use extra brackets if assignment happens
1145in the loop:
1146      while (($fields = $GLOBALS['TYPO3_DB']->sql_fetch_result($res))) {
1147            // Do something
1148      }
1149
1150
1151File: t3php-mode.info,  Node: Strings,  Next: Booleans,  Prev: Loops,  Up: PHP syntax formatting
1152
1153A.3.8 Strings
1154-------------
1155
1156All strings must use single quotes. Double quotes are allowed only to
1157create the new line character ("`\n'").  String concatenation operator
1158must be surrounded by spaces. Example:
1159        $content = 'Hello ' . 'world!';
1160   However the space after the concatenation operator must not be
1161present if the operator is the last construction on the line. *Note
1162Whitespace and indentation::, for more information.
1163
1164Variables must not be embedded into strings. Correct:
1165        $content = 'Hello ' . $userName;
1166   Incorrect:
1167        $content = Hello $userName;
1168   Multiline string concatenations are allowed. Line concatenation
1169operator must be at the end of the line. Lines starting from the second
1170must be indented relative to the first line. It is recommended to
1171indent lines one level from the start of the string on the first level:
1172        $content = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. ' .
1173                          'Donec varius libero non nisi. Proin eros.';
1174
1175
1176File: t3php-mode.info,  Node: Booleans,  Next: PHP5 features,  Prev: Strings,  Up: PHP syntax formatting
1177
1178A.3.9 Booleans
1179--------------
1180
1181Booleans must use PHP's language constructs and not explicit integer
1182values like 0 or 1. Furthermore they should be written in uppercase,
1183i.e. `TRUE' and `FALSE'.
1184
1185
1186File: t3php-mode.info,  Node: PHP5 features,  Next: Global variables,  Prev: Booleans,  Up: PHP syntax formatting
1187
1188A.3.10 PHP5 features
1189--------------------
1190
1191The use of PHP5 features is strongly recommended for extensions and
1192mandatory for the TYPO3 core versions 4.2 or greater.
1193
1194   Class functions must have access type specifier: `public',
1195`protected' or `private'. Notice that private may prevent XCLASSing of
1196the class. Therefore private can be used only if it is absolutely
1197necessary.
1198
1199Class variables must use access specifier instead of `var' keyword.
1200
1201Type hinting must be used when function expects array or an instance of
1202a certain class. Example:
1203       protected function executeAction(tx_myext_action& $action, array $extraParameters) {
1204             // Do something
1205       }
1206   Static functions must use `static' keyword. This keyword must be the
1207first keyword in the function definition:
1208       static public function executeAction(tx_myext_action& $action, array $extraParameters) {
1209             // Do something
1210       }
1211   `abstract' keyword also must be on the first position in the
1212function declaration:
1213       abstract protected function render();
1214
1215
1216File: t3php-mode.info,  Node: Global variables,  Next: Functions,  Prev: PHP5 features,  Up: PHP syntax formatting
1217
1218A.3.11 Global variables
1219-----------------------
1220
1221Use of `global' is not recommended. Always use `$GLOBALS['variable']'.
1222
1223
1224File: t3php-mode.info,  Node: Functions,  Prev: Global variables,  Up: PHP syntax formatting
1225
1226A.3.12 Functions
1227----------------
1228
1229If a function returns a value, it must always return it. The following
1230is not allowed:
1231function extendedUse($enabled) {
1232       if ($enabled) {
1233              return 'Extended use';
1234       }
1235}
1236   The following is the correct behavior:
1237function extendedUse($enabled) {
1238       $content = '';
1239       if ($enabled) {
1240              $content = 'Extended use';
1241       }
1242       return $content;
1243}
1244   In general there should be a single return statement in the function
1245(see the preceding example). However a function can return during
1246parameter validation before it starts its main logic. Example:
1247function extendedUse($enabled, tx_myext_useparameters $useParameters) {
1248       // Validation
1249       if (count($useParameters->urlParts) < 5) {
1250              return 'Parameter validation failed';
1251       }
1252       // Main functionality
1253       $content = '';
1254       if ($enabled) {
1255              $content = 'Extended use';
1256       } else {
1257              $content = 'Only basic use is available to you!';
1258       }
1259       return $content;
1260}
1261   Functions should not be long. "Long" is not defined in terms of
1262lines. General rule is that function should fit into 2/3 of the screen.
1263This rule allows small changes in the function without splitting the
1264function further.
1265
1266
1267File: t3php-mode.info,  Node: Using phpDoc,  Next: The ChangeLog file,  Prev: PHP syntax formatting,  Up: TYPO3 Coding Guidelines
1268
1269A.4 Using phpDoc
1270================
1271
1272phpDoc is used for documenting source code. Typically TYPO3 code uses
1273the following phpDoc keywords:
1274   * @author
1275
1276   * @access
1277
1278   * @global
1279
1280   * @param
1281
1282   * @package
1283
1284   * @return
1285
1286   * @see
1287
1288   * @subpackage
1289
1290   * @var
1291   For more information on phpDoc see the phpDoc web site at
1292`http://www.phpdoc.org/' TYPO3 requires that each class, function and
1293method is documented with phpDoc. For information on phpDoc with use in
1294classes see *note Class information block::. Note that the @author tag
1295should *not* be used in function or method phpDoc comment blocks --
1296only at class level -- because it is too liable to change frequently
1297and authors would accumulate indefinitely. `svn blame' is enough for
1298tracking changes.  Functions should have parameters and return type
1299documented. Example:
1300/**
1301  * Initializes the plugin. Checks the configuration and substitutes defaults for missing values.
1302  * @param   array $conf Plugin configuration from TypoScript
1303  * @return void
1304  * @see     tx_myext_class:anotherFunc()
1305  */
1306protected function initialize(array $conf) {
1307       // Do something
1308}
1309   Notice the use of `void' when function does not return a value.
1310
1311
1312File: t3php-mode.info,  Node: The ChangeLog file,  Prev: Using phpDoc,  Up: TYPO3 Coding Guidelines
1313
1314A.5 The ChangeLog file
1315======================
1316
1317TYPO3 core has a `ChangeLog' file where all changes are recorded. This
1318file is committed to the SVN together with the change.
1319
1320Each entry in the ChangeLog file has the following format:
1321   * Information about the date of the change (YYYY-mm-dd), author name
1322     and author's e-mail address. These three pieces of information are
1323     separated strictly by two spaces (no tabs!)
1324
1325   * Empty line
1326
1327   * One or more lines describing the change. Each such line is
1328     indented by a single tab
1329
1330   * Empty line
1331
1332   * Line that describes the change consists from the following parts:
1333
1334   * Asterisk character
1335
1336   * Type of the change ("Fixed bug" or "Added feature")
1337
1338   * Bug tracker issue id ("#12345")
1339
1340   * A colon
1341
1342   * Bug tracker issue title or, if needed, a more meaningful title that
1343     describes the change ("great feature for TYPO3")
1344
1345   * Optional thanks to message of the patch was submitted by the
1346     contributor
1347   In some cases the line can have free format. This applies to
1348nonfunctional changes, like "Formatting change" or "Fixed copyright
1349dates").
1350
1351Here is an example of the ChangeLog entry:
13522009-01-06   John Doe   <john@doe.com>
1353      * Fixed bug #12345: typolink does not take XYZ into account
1354      * Added feature #12345: Google sitemap in the TYPO3 core (thanks to Jane Doe)
1355   `ChangeLog' file updates are mandatory for every change in the TYPO3
1356core. Extension authors are strongly recommended to use such file with
1357the same format in their extensions.
1358
1359
1360File: t3php-mode.info,  Node: Key Index,  Next: Variable Index,  Prev: TYPO3 Coding Guidelines,  Up: Top
1361
1362Key Index
1363*********
1364
1365[index]
1366* Menu:
1367
1368* <DOWN>:                                Buffer outline.        (line 6)
1369* <LEFT>:                                Buffer outline.        (line 6)
1370* <RET>:                                 Buffer outline.        (line 6)
1371* <RIGHT>:                               Buffer outline.        (line 6)
1372* <SPC>:                                 Buffer outline.        (line 6)
1373* <TAB>:                                 Buffer outline.        (line 6)
1374* <UP>:                                  Buffer outline.        (line 6)
1375* ?:                                     Buffer outline.        (line 6)
1376* C-<END>:                               Buffer outline.        (line 6)
1377* C-<HOME>:                              Buffer outline.        (line 6)
1378* C-c C-t:                               Buffer outline.        (line 6)
1379* f:                                     Buffer outline.        (line 6)
1380* k:                                     Buffer outline.        (line 6)
1381* n:                                     Buffer outline.        (line 6)
1382* p:                                     Buffer outline.        (line 6)
1383* r:                                     Buffer outline.        (line 6)
1384
1385
1386File: t3php-mode.info,  Node: Variable Index,  Next: Function Index,  Prev: Key Index,  Up: Top
1387
1388Variable Index
1389**************
1390
1391[index]
1392* Menu:
1393
1394* t3php-block-indentation:               Customization.       (line  43)
1395* t3php-date-format:                     Customization.       (line  33)
1396* t3php-developer:                       Customization.       (line  15)
1397* t3php-newline-function:                Customization.       (line  49)
1398* t3php-outline-follow-mode:             Customization.       (line 167)
1399* t3php-outline-hl-line-color:           Customization.       (line 174)
1400* t3php-outline-keep-other-windows:      Customization.       (line 118)
1401* t3php-outline-method-name-color:       Customization.       (line 181)
1402* t3php-outline-split-windows-fraction:  Customization.       (line 161)
1403* t3php-outline-split-windows-horizontally: Customization.    (line 130)
1404* t3php-path-to-typo3-extension-directory: Customization.     (line  27)
1405* t3php-php-doc-align:                   Customization.       (line  70)
1406* t3php-php-manual-url:                  Customization.       (line 106)
1407* t3php-php-search-url:                  Customization.       (line 112)
1408* t3php-typo3-extension-directory:       Customization.       (line  21)
1409* t3php-year-format:                     Customization.       (line  38)
1410
1411
1412File: t3php-mode.info,  Node: Function Index,  Prev: Variable Index,  Up: Top
1413
1414Function Index
1415**************
1416
1417[index]
1418* Menu:
1419
1420* t3php-insert-class:                    Inserting classes.    (line  7)
1421* t3php-insert-method:                   Inserting methods.    (line  7)
1422* t3php-outline:                         Buffer outline.       (line 53)
1423
1424
1425
1426Tag Table:
1427Node: Top982
1428Node: Introduction2198
1429Node: Installation2692
1430Node: Using T3PHP mode3716
1431Node: Customization4123
1432Ref: x-t3php-developer4660
1433Ref: x-t3php-typo3-extension-directory4865
1434Ref: x-t3php-path-to-typo3-extension-directory5033
1435Ref: x-t3php-year-format5337
1436Ref: fig:split_v8663
1437Ref: fig:split_h9031
1438Ref: x-stswf9404
1439Ref: Customization-Footnote-110390
1440Node: Syntax highlighting10658
1441Node: Line indentation11275
1442Node: Inserting code templates11901
1443Node: Inserting methods12242
1444Node: Inserting classes13457
1445Node: Buffer outline17053
1446Node: TYPO3 Coding Guidelines20636
1447Node: General requirements21196
1448Node: PHP tags21458
1449Node: Line breaks21942
1450Node: Line length22247
1451Node: Whitespace and indentation22969
1452Node: Character set23669
1453Node: File structure23906
1454Node: Copyright notice24663
1455Node: File information block26284
1456Node: Included files27129
1457Node: Class information block28418
1458Node: PHP class28857
1459Node: XCLASS declaration29535

Large files files are truncated, but you can click here to view the full file