PageRenderTime 67ms CodeModel.GetById 33ms 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

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

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