ExpressionEngine Docs

# Format Service

- Format Factory
- All Formatters
- Number Formatter
- Text Formatter
- When to use `compile()`

The Format service offers a number of common formatting tasks as a convenience and consolidated way for ExpressionEngine handles these tasks. The Formatter handles common string and number presentational needs.

    $display_size = ee('Format')->make('Number', $content)->bytes();

The Format service is a factory to the various formatters available. If you need the factory, use `ee('Format')`. If you need a Formatter, use `ee('Format')->make($formatter, $content)`.

## Format Factory

class `EllisLab\ExpressionEngine\Service\Formatter\FormatterFactory`

### `make($formatter_name, $content)`

Makes a Formatter object.

Parameter | Type | Description
--- | --- | ---
$formatter_name | `String` | Formatter name
$content | `Mixed` | The content to be formatted
Returns | `Formatter` | A Formatter object

## All Formatters

### `compile()`

Compiles and returns the content as a string. Typically this is used when you need to use a content as an array key, or want to json_encode() the content.

Parameter | Type | Description
--- | --- | ---
Returns | `The content` | string

### `_toString()`

When accessed as a string simply complile the content and return that.

Parameter | Type | Description
--- | --- | ---
Returns | `The content` | string

Note: When using Formatters, if you just need the string and not the object for further processing, you can use PHP’s type casting:

    $array = array('size' => (string) ee('Format')->make('Number', $content)->bytes());

## Number Formatter

See Number Formatter for details.

## Text Formatter

See Text Formatter for details.

## When to use `compile()`

The Formatter object has a magic `__toString()` method that compiles the object into a string when the object is treated as a string (see: PHP’s documentation on the magic __toString() method for more information). The `compile()` method exists for those occasions when the object is treated as an object but you need a string instead. As per PHP’s documentation on arrays: “Arrays and objects can not be used as keys. Doing so will result in a warning: Illegal offset type.“ You will also want to compile the object when you want to JSON encode the content otherwise you will get a JSON object instead of a string.

For example:

    ee()->javascript->set_global(array(
      'form.some_input.value' => ee('Format')->make('String', $content)->attribute_escape()->compile()
    ));