All streams
Search
Write a publication
Pull to refresh
-1
0
Send message
Декоратор?)

Есть некий абстрактный сервис преобразования ( будем использовать немного магии ).

```php
interface IDataPreparator{

public function setData( array $data );

/**
* return array
*/
public function getData();

}
```

Массив передаём предположим так.

```php

$data = [
'dateOne' => ['value' => '10 feb 2012', 'type' => 'date', 'format' => 'RU' ],
'dateTwo' => [ 'value' => '10 feb 2012', 'type' => 'date', 'format' => 'EN' ],
'HtmlString' => ['value' => 'Hello world', 'type' => 'html', 'options' => ['encoding' => 'utf-8']]
];

```
Где ключ название переменной, а значения правила.

Да, придётся много писать, но более универсальное средство.
Да и делается это сколько угодно раз.
Чтобы вернуть всё в состояние переменных сделаем extract();

Profit, написали библиотеку для преобразований, а в представлении работаем уже с подготовленными данными.

```php

class Controller {

public function actionIndex(){
$data = Model::getData();
$preparedData = (new DataPreparator()) -> setData([ 'dateOne' => ['value' => $data['dateNewYork'], 'format' => 'EN' ] ])->getPreparedData();
$this->renderView('view', $preparedData );
}

}

```
А не проще решить всё абстракцией?))
Ставим прослойку между контроллером и представлением и обрабатываем нужные данные, так как нужно (экранирование, преобразование даты и прочее)?
Тем самым в представлении уже подготовленные данные, которые можно выводить как угодно.
Прослойка мигрирует из проекта в проект.

Даже в Bitrix можно воткнуть данное решение ( костылём правда ).

Так что я лично не вижу смысла в добавлении оператора, так как экранировать можно в миллионах разных вариаций и одним оператором это не решить.
К сожалению, да. Там вроде как суд происходит в том округе в котором подано исковое заявление. Так как законодательство от штата к штату меняется.
2

Information

Rating
Does not participate
Registered
Activity