## Rules

The following list gives an overview of which rights the PHP project reserves for itself, when choosing names for new internal identifiers. The definitive guide is the official » CODING STANDARDS:

- PHP owns the top-level namespace but tries to find decent descriptive names and avoid any obvious clashes.

- Function names use underscores between words, while class names use both the `camelCase` and `PascalCase` rules.

- PHP will prefix any global symbols of an extension with the name of the extension. (In the past, there have been numerous exceptions to this rule.) Examples:

  - curl_close()

  - mysql_query()

  - PREG_SPLIT_DELIM_CAPTURE

  - new DOMDocument()

  - strpos() (example of a past mistake)

  - new SplFileObject()

- Iterators and Exceptions are however simply postfixed with "`Iterator`" and "`Exception`." Examples:

  - ArrayIterator

  - LogicException

- PHP reserves all symbols starting with `__` as magical. It is recommended that you do not create symbols starting with `__` in PHP unless you want to use documented magical functionality. Examples:

  - __get()

  - __autoload()