Вышел первый стабильный релиз CakePHP 1.3

После четырех версий релиз-кандидатов вышла стабильная версия CakePHP 1.3. По сравнению с версией 1.2 в новой 1.3 реализовано много новых функций еще более облегчающих разработку приложений.

Ниже я попытаюсь привести основные изменения в новой версии, перевод с официального сайта.

Компоненты

SecurityComponent

Различные методы requireXX, такие как requireGet и requirePost теперь принимают в качестве параметра строковый массив.

$this->Security->requirePost(array( 'edit' , 'update' ));

Настройка компонентов

Теперь настройки для всех компонентов могут быть в массиве $components. Многие параметры поведения компонентов можно объявить при объявление самого компонента.

var $components = array(
    'Cookie' => array(
        'name' => 'MyCookie'
    ),
    'Auth' => array(
        'userModel' => 'MyUser',
        'loginAction' => array('controller' => 'users', 'action' => 'login')
    )
);

Это должно помочь очистить от хаоса метод beforeFilter() в контроллерах.

EmailComponent

  • Теперь Вы можете получать содержание отправляемых электронных сообщений, читая параметры $this->Email->htmlMessage и $this->Email->textMessage. Эти свойства будут содержать сообщение которое будет отправлено получателю.
  • Многие из скрытых методов EmailComponent, были сделаны защищенными, для их расширения.
  • EmailComponent::$to теперь может быть массивом. Это позволяет упростить отправку сообщения несколькими получателями, а также согласованности с другими свойствами.
  • EmailComponent::$messageId может быть добавлен, это позволяет управлять значением Message-ID в заголовке электронного сообщения.

Представления и помощники

Теперь помощники могут использоваться как $this->Helper->func() в дополнение к $helper->func().

Помощник Pagination

Для постраничной разбивки можно использовать дополнительные css классы для оформления, а так же настроить по умолчанию направление сортировки. PaginatorHelper::next() и PaginatorHelper::prev() теперь генерируются по умолчанию при помощи тегов span, вместо div-ов.

Helper

Был добавлен Helper::assetTimestamp(). Это позволяет добавить метку времени к любому объекту в WWW_ROOT. Это работает как Configure::read('Asset.timestamp'); но теперь эта функциональность доступна для всех помощников.

$path = 'css/cake.generic.css'
$stamped = $this->Html->assetTimestamp($path);
//$stamped contains 'css/cake.generic.css?5632934892'

Добавление временной метки последней модификации файла. Так как этот метод определен в Helper то от доступен во всех подклассах.

TextHelper

highlight() теперь принимает массив из строк для выделения.

NumberHelper

Был добавлен новый метод addFormat(). Он позволяет задавать формат для вывода валюты.

$this->Number->addFormat('NOK', array('before' => 'Kr. '));
$formatted = $this->Number->currency(1000, 'NOK');

Кэширование

Работа кэшей в 1.3 реализована более гибко. Теперь вы можете использовать собственные средства кеширования в app/libs, а если это дополнение то $plugin/libs. App/plugin может перекрывать средства ядра. Адаптер кеша может находится в директории кеша. Если у вас было средство кеширования с именем MyCustomCacheEngine он будет размещен в app/libs/cache/my_custom_cache.php или app/libs. Или в $plugin/libs/cache/my_custom_cache.php как часть дополнения. При настройка кешей из дополнений необходимо использовать точку для указания названия расширения.

Cache::config('custom', array(
    'engine' => 'CachePack.MyCustomCacheEngine',
    ...
));

Новые методы в Cache

Cache имеет несколько новых методов, которые служат для упрощения диагностики и проверки краха кэшей.

  • Cache::configured() возвращает массив для настройки кэша.
  • Cache::drop($config) сбрасывает настройки кэширования. Когда отключен кэш, то он больше не читается и не записывается.
  • Cache::increment() выполняет автономное прибавление к числовому значению. Это не реализовано для FileEngine.
  • Cache::decrement() выполняет автономное убавление от числового значения. Это не реализовано для FileEngine.

P.S.

Это лишь небольшая часть улучшений которые были сделаны в новой версии CakePHP. Как вы можете заметить, то для того что бы перейти на новую версию, то возможно придется изменять ваше приложение. В ближайшее время я постараюсь дать вам перевод документации о переходе с версии 1.2 на 1.3.

Автор: Сергей Степанов

Поделиться @

Пока нет коментариев. Будьте первым!