From 06f945f27840b53e57795dadbc38e76f7e11ab1c Mon Sep 17 00:00:00 2001 From: Horus3 Date: Mon, 24 Feb 2014 16:42:14 +0100 Subject: init --- .../core/en/coding-standard.coding-style.html | 843 +++++++++++++++++++++ 1 file changed, 843 insertions(+) create mode 100644 zend/documentation/manual/core/en/coding-standard.coding-style.html (limited to 'zend/documentation/manual/core/en/coding-standard.coding-style.html') diff --git a/zend/documentation/manual/core/en/coding-standard.coding-style.html b/zend/documentation/manual/core/en/coding-standard.coding-style.html new file mode 100644 index 0000000..bbf6cca --- /dev/null +++ b/zend/documentation/manual/core/en/coding-standard.coding-style.html @@ -0,0 +1,843 @@ + + +
+ +
+
+ Coding StylePHP Code Demarcation+ PHP code must always be delimited by the full-form, standard + PHP tags: + + +
+ Short tags are never allowed. For files containing only PHP + code, the closing tag must always be omitted (See General standards). + +StringsString Literals+ When a string is literal (contains no variable substitutions), the apostrophe or + "single quote" should always be used to demarcate the string: + + +
String Literals Containing Apostrophes+ When a literal string itself contains apostrophes, it is permitted to demarcate + the string with quotation marks or "double quotes". This is especially useful + for SQL statements: + + +
+ This syntax is preferred over escaping apostrophes as it is much easier to read. + +Variable Substitution+ Variable substitution is permitted using either of these forms: + + +
+ For consistency, this form is not permitted: + + +
String Concatenation+ Strings must be concatenated using the "." operator. A space must always + be added before and after the "." operator to improve readability: + + +
+ When concatenating strings with the "." operator, it is encouraged to + break the statement into multiple lines to improve readability. In these + cases, each successive line should be padded with white space such that the + "."; operator is aligned under the "=" operator: + + +
ArraysNumerically Indexed ArraysNegative numbers are not permitted as indices. + ++ An indexed array may start with any non-negative number, however + all base indices besides 0 are discouraged. + + ++ When declaring indexed arrays with the Array function, a trailing + space must be added after each comma delimiter to improve readability: + + ++ It is permitted to declare multi-line indexed arrays using the "array" + construct. In this case, each successive line must be padded with spaces such + that beginning of each line is aligned: + + +
+ Alternately, the initial array item may begin on the following line. If so, + it should be padded at one indentation level greater than the line containing + the array declaration, and all successive lines should have the same + indentation; the closing paren should be on a line by itself at the same + indentation level as the line containing the array declaration: + + +
+ When using this latter declaration, we encourage using a trailing comma for + the last item in the array; this minimizes the impact of adding new items on + successive lines, and helps to ensure no parse errors occur due to a missing + comma. + +Associative Arrays+ When declaring associative arrays with the Array construct, + breaking the statement into multiple lines is encouraged. In this case, each + successive line must be padded with white space such that both the keys and the + values are aligned: + + +
+ Alternately, the initial array item may begin on the following line. If so, + it should be padded at one indentation level greater than the line containing + the array declaration, and all successive lines should have the same + indentation; the closing paren should be on a line by itself at the same + indentation level as the line containing the array declaration. For + readability, the various "=>" assignment operators should be padded such that + they align. + + +
+ When using this latter declaration, we encourage using a trailing comma for + the last item in the array; this minimizes the impact of adding new items on + successive lines, and helps to ensure no parse errors occur due to a missing + comma. + +ClassesClass Declaration+ Classes must be named according to Zend Framework's naming conventions. + + ++ The brace should always be written on the line underneath the class name. + + ++ Every class must have a documentation block that conforms to the PHPDocumentor + standard. + + ++ All code in a class must be indented with four spaces. + + ++ Only one class is permitted in each PHP file. + + ++ Placing additional code in class files is permitted but discouraged. + In such files, two blank lines must separate the class from any additional + PHP code in the class file. + + ++ The following is an example of an acceptable class declaration: + + +
+ Classes that extend other classes or which implement interfaces should + declare their dependencies on the same line when possible. + + +
+ If as a result of such declarations, the line length exceeds the maximum line + length, break the line before the "extends" and/or "implements" + keywords, and pad those lines by one indentation level. + + +
+ If the class implements multiple interfaces and the declaration exceeds the + maximum line length, break after each comma separating the interfaces, and + indent the interface names such that they align. + + +
Class Member Variables+ Member variables must be named according to Zend Framework's variable naming + conventions. + + ++ Any variables declared in a class must be listed at the top of the class, above + the declaration of any methods. + + ++ The var construct is not permitted. Member variables always + declare their visibility by using one of the private, + protected, or public modifiers. Giving + access to member variables directly by declaring them as public is permitted but + discouraged in favor of accessor methods (set & get). + +Functions and MethodsFunction and Method Declaration+ Functions must be named according to Zend Framework's function naming + conventions. + + ++ Methods inside classes must always declare their visibility by using + one of the private, protected, + or public modifiers. + + ++ As with classes, the brace should always be written on the line underneath the + function name. Space between the function name and the opening parenthesis for + the arguments is not permitted. + + ++ Functions in the global scope are strongly discouraged. + + ++ The following is an example of an acceptable function declaration in a class: + + +
+ In cases where the argument list exceeds the maximum line + length, you may introduce line breaks. Additional arguments to the + function or method must be indented one additional level beyond the function + or method declaration. A line break should then occur before the closing + argument paren, which should then be placed on the same line as the opening + brace of the function or method with one space separating the two, and at the + same indentation level as the function or method declaration. The following is + an example of one such situation: + + +
+ +
+ Call-time pass-by-reference is strictly prohibited. + + ++ The return value must not be enclosed in parentheses. This can hinder + readability, in additional to breaking code if a method is later changed to + return by reference. + + +
Function and Method Usage+ Function arguments should be separated by a single trailing space after the + comma delimiter. The following is an example of an acceptable invocation of a + function that takes three arguments: + + +
+ Call-time pass-by-reference is strictly prohibited. See the function + declarations section for the proper way to pass function arguments by-reference. + + ++ In passing arrays as arguments to a function, the function call may include the + "array" hint and may be split into multiple lines to improve readability. In + such cases, the normal guidelines for writing arrays still apply: + + + + +Control StatementsIf/Else/Elseif+ Control statements based on the if and + elseif constructs must have a single space before the + opening parenthesis of the conditional and a single space after the closing + parenthesis. + + ++ Within the conditional statements between the parentheses, operators must be + separated by spaces for readability. Inner parentheses are encouraged to improve + logical grouping for larger conditional expressions. + + ++ The opening brace is written on the same line as the conditional statement. The + closing brace is always written on its own line. Any content within the braces + must be indented using four spaces. + + +
+ If the conditional statement causes the line length to exceed the maximum line + length and has several clauses, you may break the conditional into + multiple lines. In such a case, break the line prior to a logic operator, and + pad the line such that it aligns under the first character of the conditional + clause. The closing paren in the conditional will then be placed on a line with + the opening brace, with one space separating the two, at an indentation level + equivalent to the opening control statement. + + +
+ The intention of this latter declaration format is to prevent issues when + adding or removing clauses from the conditional during later revisions. + + ++ For "if" statements that include "elseif" or "else", the formatting conventions + are similar to the "if" construct. The following examples demonstrate proper + formatting for "if" statements with "else" and/or "elseif" constructs: + + +
+ PHP allows statements to be written without braces in some + circumstances. This coding standard makes no differentiation- all "if", + "elseif" or "else" statements must use braces. + +Switch+ Control statements written with the "switch" statement must have a single space + before the opening parenthesis of the conditional statement and after the + closing parenthesis. + + ++ All content within the "switch" statement must be indented using four spaces. + Content under each "case" statement must be indented using an additional four + spaces. + + +
+ The construct default should never be omitted from a + switch statement. + + ++ Inline DocumentationDocumentation Format+ All documentation blocks ("docblocks") must be compatible with the phpDocumentor + format. Describing the phpDocumentor format is beyond the scope of this + document. For more information, visit: » http://phpdoc.org/ + + ++ All class files must contain a "file-level" docblock at the top of each file and + a "class-level" docblock immediately above each class. Examples of such + docblocks can be found below. + +Files+ Every file that contains PHP code must have a docblock at + the top of the file that contains these phpDocumentor tags at a minimum: + + +
+ The @category annotation must have a value of "Zend". + + ++ The @package annotation must be assigned, and should be + equivalent to the component name of the class contained in the file; typically, + this will only have two segments, the "Zend" prefix, and the component name. + + ++ The @subpackage annotation is optional. If provided, it + should be the subcomponent name, minus the class prefix. In the example above, + the assumption is that the class in the file is either + "Zend_Magic_Wand", or uses that classname as part of its + prefix. + +Classes+ Every class must have a docblock that contains these phpDocumentor tags at a + minimum: + + +
+ The @category annotation must have a value of "Zend". + + ++ The @package annotation must be assigned, and should be + equivalent to the component to which the class belongs; typically, this will + only have two segments, the "Zend" prefix, and the component name. + + ++ The @subpackage annotation is optional. If provided, it + should be the subcomponent name, minus the class prefix. In the example above, + the assumption is that the class described is either + "Zend_Magic_Wand", or uses that classname as part of its + prefix. + +Functions+ Every function, including object methods, must have a docblock that contains at + a minimum: + + +
+ It is not necessary to use the "@access" tag because the access level is already + known from the "public", "private", or "protected" modifier used to declare the + function. + + ++ If a function or method may throw an exception, use @throws for all known + exception classes: + + +
+ +
|
+ + + | +