Every document can have custom properties. These can be managed from the tab "Properties" in the CMS for every document and snippet. The editor can add new properties themselves or select existing ones from a list of predefined properties.
The property must have a unique name (per document) which can be used to access it through code as shown in the example below.
Example
Retrieving properties of a document:
//retrieve the value of a property named "foobar" $value = $this->document->getProperty('foobar'); //retrieve an array with all properties for this document $list = $this->document->getProperties();