Differences

This shows you the differences between the selected revision and the current version of the page.

punbb13:coding_standards 2010/04/02 07:39 punbb13:coding_standards 2020/02/06 11:04 current
Line 1: Line 1:
 +====== PunBB 1.3 Coding standards ======
 +
Recommendations below describes the appearance of PHP, JavaScript, SQL or any other code used in PunBB and extensions. Recommendations below describes the appearance of PHP, JavaScript, SQL or any other code used in PunBB and extensions.
 +
 +===== Naming convention =====
 +
 +The naming rules apply to the naming of variables, functions, classes, attributes, arrays, array elements, HTML form fields, query string parameters, database tables, database fields as well as any other applicable entities.
 +
 +  * All names should be all lowercase.
 +  * Use _ (underscore) as the word separator. E.g. ''date_format''. Never start a name with the underscore character (except for nested functions, which should start with an underscore  character).
 +  * Use the prefix "num" for entities that represent a count. E.g. ''num_users''. Use the prefix "cur" for entities that represent the current element when iterating through any type of collection (database result set, array etc).
 +  * Avoid all forms of Hungarian notation or derivatives or variations thereof.
 +  * Use common sense. If in doubt, look at similar sections in the PunBB source code.
 +
 +===== Formatting =====
 +
 +All line breaks should be LF only. Set your editor to save files with UNIX style line breaks.
 +
 +The indent style and brace policy is the [[http://en.wikipedia.org/wiki/Indent_style#Allman_style_.28bsd_in_Emacs.29|Allman style]]. All indentation should be made with tabs, not spaces. Examples:
 +
 +<code php>if (<expression>)
 +{
 +    <statement>;
 +    ...
 +    <statement>;
 +}
 +else
 +{
 +    <statement>;
 +    ...
 +    <statement>;
 +}
 +
 +while (<expression)
 +{
 +    <statement>;
 +    ...
 +    <statement>;
 +}
 +</code>
 +
 +One allowed exception from the standard Allman style is "braceless" blocks:
 +
 +<code php>if (<expression>)
 +    <statement>;
 +else
 +    <statement>;
 +
 +while (<expression)
 +    <statement>;
 +</code>
 +
 +===== PHP =====
 +
 +  * Use singlequotes as opposed to doublequotes when working with strings. E.g.  ''$str = 'Users: '.$num_users;''  as opposed to ''$str = "Users: $num_users";''  .
 +  * Leave one line of whitespace above and below each block of markup, provided the block constitutes multiple lines of markup. I.e. one empty line above each ''?>'' and below each ''<?php''. The exception to this is when there is only one line of code, in which case the entire section of code should be on one line.
 +  * Don't use PHP's short tags (''<?'', ''<?=''), but use its full equivalent (''<?php'', ''<?php echo'').
 +  * Don't use ''$_REQUEST''. Use ''$_POST'' or ''$_GET'' instead.
 +  * Define the ''FORUM_ROOT'' constant to the relative path to the PunBB root directory, if you want to include ''common.php'' or ''essentials.php''.
 +  * Try to avoid PHP warnings/notices in any cases.
 +
 +===== SQL =====
 +
 +  * Always escape potentially harmful data using <code php>$forum_db->escape()</code> Expected integer values should be forced into integer form using ''intval()'' before use in a query.
 +  * Prefix tables names and table indexes with <code php>$forum_db->prefix</code>
 +  * Use the SQL2003 style [[http://en.wikipedia.org/wiki/Join_(SQL)#Inner_join|explicit join notation]].
 +  * Whenever possible, write cross-database compatible queries. Developers should take advantage of [[punbb13:database helpers]]. They allows to easily create/extend cross-database compatible queries. In rare cases where database specific queries are needed, every effort should be made to provide alternative queries for other supported databases.
 +
 +===== CSS =====
 +
 +Here is the example of the indentation in CSS files:
 +<code css>.class {
 +    attribute: value;
 +    }</code>

Personal Tools