This manual is deprecated. Please visit https://groupoffice.readthedocs.io for the latest documentation. |
Coding Guidelines
Contents
Coding Guidelines
Coding style
- Files MUST use only UTF-8 without BOM for PHP code.
- Code MUST use tabs for indenting, not spaces.
- Class names MUST be declared in
StudlyCaps
. - Class names should be in the following format:
GO_<MODULENAME>_<FOLDERNAME>_<FILENAME>
- Class constants MUST be declared in all UPPER_CASE with underscore separators.
- Method names MUST be declared in
camelCase
. - Property names MUST be declared in
camelCase
. - Property and Methods names MUST start with an initial underscore
_
if they are private. - Always use `elseif` instead of
else if
. - PHP code MUST use the long
<?php ?>
tags; it MUST NOT use the other tag variations such as<?
. - In case file contains PHP only it should not have trailing
?>
. - Do not add trailing spaces to the end of the lines.
Docblocks
Every declared class or function should contain a docblocks header with exception of overwritten function that do not add new functionality (eg tableName()
, relations()
)
A block should at least contain a short description
@param
, @var
, @property
and @return
must declare types as boolean, integer, string, array or null. You can use a class names as well such as GO_Base_Data_Store
or GO_Base_Db_ActiveRecord
. For a typed arrays use GO_Base_Model_User[]
When a function or class is deprecated the @deprecated
tag should be used (Netbeans can hide all deprecated functionality in the code completion)
Models
All models should go into the `model` folder of the module folder
The items of a model class should be in the following order:
- Constants (eg
STATUS_OK
,STATUS_FAILED
) - Properties/attributes (eg
$_user
,$amount
) - Overwritten functions (eg
tableName()
,primairyKey()
, relations()</code>) - Get/Set Methods (eg
getUser()
,setEndTime($value)
) - Functions (eg
start()
,close()
,addItem()
)
If class name is not in the format GO_<MODULENAME>_Model_<FILENAME>
not the the class will never be able to autoload
<MODULENNAME> MUST be in Firstcaps without special characters
<FILENAME> MUST be StudlyCaps
Controllers
All controllers should go into the controller folder of the module
The items of a controller class should be in the following order:
- Properties ( eg.
$layout
,$model
) - Overwritten function (eg.
beforeAction()
) - Actions (eg.
actionSubmit($params)
,actionStore($params)
)
Controller action should only have one parameter named $parmas this is the http request its REQUEST array Controllers that will return JSON data should extend `GO_Base_Controller_AbstractJsonController`
Prevent using properties in a class, an action method is 1 script run
Prevent private methodes, use them for code that should be shared among actions. In must cased there is code in the controller that is functionality of a class.
ExtJs Views
All views should go into the views/<theme>/
folder of the module