Basic Coding Standard

2014 年 5 月 12 日5490

Basic Coding Standard

This section of the standard comprises what should be considered the standard

coding elements that are required to ensure a high level of technical

interoperability between shared PHP code.

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",

"SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be

interpreted as described in RFC 2119.

1. Overview

Files MUST use only <?php and <?= tags.

Files MUST use only UTF-8 without BOM for PHP code.

Files SHOULD either declare symbols (classes, functions, constants, etc.)

or cause side-effects (e.g. generate output, change .ini settings, etc.)

but SHOULD NOT do both.

2. Files

2.1. PHP Tags

PHP code MUST use the long <?php ?> tags or the short-echo <?= ?> tags; it

MUST NOT use the other tag variations.

2.2. Character Encoding

PHP code MUST use only UTF-8 without BOM.

2.3. Side Effects

A file SHOULD declare new symbols (classes, functions, constants,

etc.) and cause no other side effects, or it SHOULD execute logic with side

effects, but SHOULD NOT do both.

The phrase "side effects" means execution of logic not directly related to

declaring classes, functions, constants, etc., merely from including the

file.

"Side effects" include but are not limited to: generating output, explicit

use of require or include, connecting to external services, modifying ini

settings, emitting errors or exceptions, modifying global or static variables,

reading from or writing to a file, and so on.

The following is an example of a file with both declarations and side effects;

i.e, an example of what to avoid:

The following example is of a file that contains declarations without side

effects; i.e., an example of what to emulate:

3. Namespace and Class Names

Namespaces and classes MUST follow PSR-0.

This means each class is in a file by itself, and is in a namespace of at

least one level: a top-level vendor name.

Class names MUST be declared in StudlyCaps.

Code written for PHP 5.3 and after MUST use formal namespaces.

For example:

Code written for 5.2.x and before SHOULD use the pseudo-namespacing convention

of Vendor_ prefixes on class names.

4. Class Constants, Properties, and Methods

The term "class" refers to all classes, interfaces, and traits.

4.1. Constants

Class constants MUST be declared in all upper case with underscore separators.

For example:

4.2. Properties

This guide intentionally avoids any recommendation regarding the use of

$StudlyCaps, $camelCase, or $under_score property names.

Whatever naming convention is used SHOULD be applied consistently within a

reasonable scope. That scope may be vendor-level, package-level, class-level,

or method-level.

4.3. Methods

Method names MUST be declared in camelCase().

Join Our

Mailing List

Join Our

CS Mailing List

freenode#phpfig

IRC Chat

Frequently Asked

Questions

Autoloading Standard

PSR-0

Basic Coding Standard

PSR-1

Coding Style Guide

PSR-2

Logger Interface

PSR-3

Improved Autoloading

PSR-4

0 0